Go в примери: Функции с произволен брой податки

Функциите с променлив брой податки могат да бъдат извикани с нула или повече последващи податки. fmt.Println е една от често използваните такива функции.

package main
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, които ще разгледаме после.


  1. closure – затваряне (на променливи в текущия обхват на видимост), затвор

Следващ пример: .