Можете ли вы назвать четыре места, где три точки (...) используются в Go?
Variadic параметры функции
Если последний параметр функции имеет тип ... T, он может быть вызван с любым числом конечных аргументов типа T. Фактический тип ... T внутри функции - это срез []T.
Этот пример функции может быть вызван, например, с помощью Sum(1, 2, 3, 4) или Sum(1, 2) или Sum() или любым другим количеством аргументов типа int.
func Sum(nums ...int) int {
res := 0
for _, n := range nums {
res += n
}
return res
}
Аргументы к variadic функциям
Вы можете передать срез sl непосредственно в variadic функцию, если распакуете его с sl... нотацией. В этом случае новый срез не создается.
В этом примере мы передаем срез функции Sum.
primes := []int{2, 3, 5, 7}
fmt.Println(Sum(primes...)) // 17
Литералы массивов
В литерале массива нотация ... указывает длину, равную количеству элементов в литерале.
students := [...]string{"Ivan", "Anton", "Danil", "Igor"}
// len(students) == 4
Команда go
Три точки используются командой go как подстановочный знак при описании списков пакетов.
Эта команда тестирует все пакеты в текущем каталоге и его подкаталогах.
$ go test ./...
Читайте также:
- Спецификация Go: передача аргументов в ... параметрах
- Спецификация Go: добавление в срезы и копирование срезов
- Эффективный Go: массивы
Комментариев нет:
Отправить комментарий