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
|
|||
|
|
|||
|
```
|