Объявления функций Variadic и вызовы функций Variadic
Объявления функций с переменным числом аргументов
Объявления переменных функций аналогичны общим объявлениям функций. Разница в том, что последний параметр функции с переменным числом аргументов должен быть параметром с переменным числом аргументов. Обрати внимание, что параметр с переменным числом аргументов функции будет рассматриваться как срез в теле функции с переменным числом аргументов.
Из приведенных выше двух объявлений функций с переменным числом аргументов мы можем обнаружить, что если параметр с переменным числом аргументов объявлен с частью типа как ...T, то фактически ...T тип параметра равен []T.
Все функции Print, Println и Printf в стандартном пакете fmt являются функциями с переменным числом аргументов.
Типы вариативных параметров трех функций — все []interface{}, тип элемента которых interface{} является типом интерфейса.
Вызовы функций с переменным числом аргументов
Существует два способа передачи аргументов вариативному параметру типа [ ]T:
-
Передать значение среза в качестве единственного аргумента. Срез должен быть присваиваемым значениям типа [ ]T, а за срезом должны следовать три точки . . . . Переданный срез называется вариативным аргументом.
-
Передать ноль или более аргументов, которые можно присвоить значениям типа T. Эти аргументы будут скопированы (или преобразованы) как элементы нового выделенного значения слайса типа [ ]T, затем новый выделенный слайс будет передан параметру с переменным числом аргументов.
Обрати внимание, что эти два способа нельзя смешивать в одном и том же вызове функции с переменным числом аргументов.
Пример программы, которая использует некоторые вызовы функций с переменным числом аргументов:
Другой пример:
Следующий пример не компилируется, так как два метода вызова функций с переменным числом переменных смешаны.