Skip to content

Объявления функций Variadic и вызовы функций Variadic

Объявления функций с переменным числом аргументов

Объявления переменных функций аналогичны общим объявлениям функций. Разница в том, что последний параметр функции с переменным числом аргументов должен быть параметром с переменным числом аргументов. Обрати внимание, что параметр с переменным числом аргументов функции будет рассматриваться как срез в теле функции с переменным числом аргументов.

Из приведенных выше двух объявлений функций с переменным числом аргументов мы можем обнаружить, что если параметр с переменным числом аргументов объявлен с частью типа как ...T, то фактически ...T тип параметра равен []T.

Все функции Print, Println и Printf в стандартном пакете fmt являются функциями с переменным числом аргументов.

Типы вариативных параметров трех функций — все []interface{}, тип элемента которых interface{} является типом интерфейса.

Вызовы функций с переменным числом аргументов

Существует два способа передачи аргументов вариативному параметру типа [  ]T:

  1. Передать значение среза в качестве единственного аргумента. Срез должен быть присваиваемым значениям типа [  ]T, а за срезом должны следовать три точки . . . . Переданный срез называется вариативным аргументом.

  2. Передать ноль или более аргументов, которые можно присвоить значениям типа T. Эти аргументы будут скопированы (или преобразованы) как элементы нового выделенного значения слайса типа [  ]T, затем новый выделенный слайс будет передан параметру с переменным числом аргументов.

Обрати внимание, что эти два способа нельзя смешивать в одном и том же вызове функции с переменным числом аргументов.

Пример программы, которая использует некоторые вызовы функций с переменным числом аргументов:

Другой пример:

Следующий пример не компилируется, так как два метода вызова функций с переменным числом переменных смешаны.