Функциите с променлив брой
податки
могат да бъдат извикани с нула или повече последващи
податки. fmt.Println е една от често използваните
такива функции.
import "fmt"
Ето една функция, приемаща произволен брой цели числа.
func sum(nums ...int) {
fmt.Print(nums, " ")
total := 0
В тялото на функцията вида на nums е отрязък от
цели числа – []int. Можем да извикаме
len(nums), да обходим nums с помощта на range
и т.н.
for _, num := range nums {
total += num
}
fmt.Println(total)
}
func main() {
Произволните функции могат да бъдат извиквани по обичайния начин с отделни, следващи една след друга податки.
sum(1, 2)
sum(1, 2, 3)
Ако вече имате набор от данни в отрязък, приложете
ги към функцията, като напишете именафунк(отр...)
ето така:
nums := []int{1, 2, 3, 4}
sum(nums...)
}
$ go run variadic-functions.go
[1 2] 3
[1 2 3] 6
[1 2 3 4] 10
Друго важно положение при функциите, е способността им да създават затваряния1, които ще разгледаме после.
Следващ пример: Затваряния.