воскресенье, 12 апреля 2020 г.

Использование 3 точек в Golang

Можете ли вы назвать четыре места, где три точки (...) используются в 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 ./...


Читайте также:


Комментариев нет:

Отправить комментарий