English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Функции, вызываемые с разным количеством параметров, называются функциями с переменным количеством параметров. Иначе говоря, это позволяет пользователю передавать функции с переменным количеством параметров ноль или любое количество параметров.fmt.PrintfЭто пример функции с переменным количеством параметров, которая в начале требует фиксированного параметра, а затем может принимать любое количество параметров.
Важно:
В объявлении функции с переменным количеством параметров перед типом последнего параметра ставится тире, то есть (...)。Это указывает на то, что функция может вызывать любое количество таких параметров
Синтаксис:
function function_name(para1, para2...type)type{ // code... }
function ...typeofДействие подобно срезу (slice). Например, предположим, что у нас есть функция с подписью add(b…int)int, которая теперь принимает параметр типа []int.
Вы также можете передавать существующие массивы в функцию с переменными аргументами. Для этого мы передаем часть полного массива функции, как показано ниже.Пример 2как показано.
Когда вы не передаете никаких аргументов в функцию с переменными аргументами, в функции используется значение nil по умолчанию.
Функции с переменными аргументами обычно используются для форматирования строк.
Вы также можете передавать несколько массивов в функцию с переменными аргументами.
Вы не можете использовать переменные аргументы в качестве значения возвращаемого, но вы можете вернуть их в виде массива.
Пример с нулевым и множеством аргументов:
package main import ( "fmt" "strings" ) //Функция с переменными аргументами для объединения строк func joinstr(element ...string) string { return strings.Join(element, "-") } func main() { //Ноль аргументов fmt.Println(joinstr()) //Множество аргументов fmt.Println(joinstr("GEEK", "GFG")) fmt.Println(joinstr("Geeks", "for", "Geeks")) fmt.Println(joinstr("G", "E", "E", "k", "S")) }
Вывод:
GEEK-GFG Geeks-for-Geeks G-E-E-k-S
Пример 2, объединение строк с помощью функции с переменными аргументами, передача среза в функции с переменными аргументами:
package main import( "fmt" "strings" ) //Функция с переменными аргументами для объединения строк func joinstr(element...string)string{ return strings.Join(element, "-") } func main() { //Передача среза в функции с переменными аргументами element:= []string{"geeks", "FOR", "geeks"} fmt.Println(joinstr(element...)) }
Вывод:
geeks-FOR-geeks
Когда мы используем функцию с переменными аргументами:
Когда вам нужно передать срез в функции, используется функция с переменными аргументами.
Когда мы не знаем количество аргументов, используется функция с переменными аргументами.
При использовании функции с переменными аргументами в программе, это может увеличить читаемость программы.