Функции Variadic в Go
#GOФункция, которая вызывается с переменным числом аргументов, называется переменной функцией. Или, другими словами, пользователю разрешено передавать ноль или более аргументов в функции переменной. fmt.Printf — это пример функции с переменным числом аргументов: для нее требуется один фиксированный аргумент при запуске, после чего он может принимать любое количество аргументов.
Важные моменты:
- В объявлении функции variadic типу последнего параметра предшествует многоточие, т. е. ( … ). Это указывает на то, что функция может быть вызвана при любом количестве параметров этого типа.Синтаксис:
function function_name(para1, para2...type)type{
// code...
}
- Внутри функции … тип ведет себя как срез. Например, предположим, что у нас есть сигнатура функции, то есть add (b… int) int, теперь параметр типа [[int].
- Вы также можете передать существующий срез в функцию с переменным значением. Чтобы сделать это, мы передаем часть полного массива функции, как показано в примере 2 ниже.
- Если вы не передаете аргумент в функцию с переменными значениями, то внутри функции будет значение nil.
- Функции variadic обычно используются для форматирования строк.
- Вы также можете передать несколько срезов в функцию variadic.
- Вы не можете использовать переменный параметр в качестве возвращаемого значения, но вы можете вернуть его как фрагмент.
Пример 1:
// Перейти к программе, чтобы проиллюстрировать
// понятие вариационной функции
package main
import(
"fmt"
"strings"
)
// Variadic функция для объединения строк
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"
)
// Variadic функция для объединения строк
func joinstr(element...string)string{
return strings.Join(element, "-")
}
func main() {
// передать срез в функцию с переменным значением
element:= []string{"geeks", "FOR", "geeks"}
fmt.Println(joinstr(element...))
}
Выход:
geeks-FOR-geeks
Когда мы используем функцию Variadic:
- Функция Variadic используется, когда вы хотите передать фрагмент функции.
- Функция Variadic используется, когда мы не знаем количество параметров.
- Когда вы используете функцию variadic в вашей программе, она повышает читабельность вашей программы.