Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goPmFnVr 255 of 350 menu
◀ ▶

Переменное число аргументов в Go

Давайте теперь будем принимать в функцию сколько угодно чисел одного типа. Последний параметр помечают тремя точками перед типом, а внутри функции это имя ведет себя как срез того же типа.

Сложим произвольный набор целых в функции sum:

package main import "fmt" func sum(nums ...int) int { total := 0 for _, n := range nums { total += n } return total } func main() { fmt.Println(sum(1, 2, 3)) // выведет 6 }

Внутри sum имя nums уже срез, по нему можно идти циклом range. Количество аргументов при вызове может быть разным, тип каждого совпадает с типом элемента. Один аргумент тоже допустим:

package main import "fmt" func sum(nums ...int) int { total := 0 for _, n := range nums { total += n } return total } func main() { fmt.Println(sum(5)) // выведет 5 }

Это не значение по умолчанию у обычного параметра. Обычный параметр нельзя опустить и нельзя подписать именем при вызове. Три точки относятся только к последнему параметру и собирают хвост аргументов в срез.

Даны числа:

a := 2 b := 3 c := 4

Напишите функцию sum с переменным числом параметров int, которая возвращает сумму. Выведите результат, передав a, b и c.

Напишите функцию func с параметром ... int, которая возвращает len от внутреннего среза. Проверьте на трех литералах и на одном.

Скажите, какой тип у параметра nums внутри тела sum после объявления с тремя точками.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить