62 lines
1.9 KiB
Markdown
62 lines
1.9 KiB
Markdown
---
|
||
title: Variadic Functions
|
||
localeTitle: Вариадические функции
|
||
---
|
||
## Вариадические функции
|
||
|
||
Вариадические функции - это функции, которые можно вызывать с любым числом возвращающих аргументов.
|
||
|
||
Это полезная функция, когда мы работаем над веб-приложениями.
|
||
|
||
Иногда нам не так много элементов, которые нам нужно будет передать движку HTML-шаблонов.
|
||
|
||
Вот основные сведения о том, как работают варидические функции:
|
||
|
||
```go
|
||
package main
|
||
import "fmt"
|
||
|
||
func printFruits(fruits ...string) {
|
||
for _, fruit := range fruits{
|
||
fmt.Println(fruit)
|
||
}
|
||
}
|
||
|
||
func main() {
|
||
printFruits("apple", "bannana")
|
||
printFruits("papaya", "coconut", "pear", "pineapple")
|
||
berries := []string{"blueberry", "strawberry", "raspberry"}
|
||
printFruits(berries...)
|
||
}
|
||
```
|
||
|
||
Во-первых, в printFruits мы определили количество аргументов с \[... string\].
|
||
|
||
Это говорит Go, что эта функция принимает любое количество строковых аргументов.
|
||
|
||
Первые два вызова printFruits показывают, что функция будет печатать каждую строку, даже если мы передаем другое количество аргументов.
|
||
|
||
```text
|
||
apple
|
||
bannana
|
||
...
|
||
papaya
|
||
coconut
|
||
pear
|
||
...
|
||
```
|
||
|
||
Это также будет работать для срезов.
|
||
|
||
Чтобы использовать функцию vardiac со срезом, мы добавляем точки тренировки к вызову.
|
||
|
||
```go
|
||
printFruits(berries...)
|
||
```
|
||
|
||
```text
|
||
blueberry
|
||
strawberry
|
||
raspberry
|
||
|
||
``` |