Go на примерах: Вариативные функции

Вариативные функции могут вызываться с произвольным числом конечных аргументов. Например, fmt.Println — распространённая вариативная функция.

package main
import "fmt"

Вот функция, которая принимает произвольное число int в качестве аргументов.

func sum(nums ...int) {
    fmt.Print(nums, " ")
    total := 0

Внутри функции тип nums эквивалентен []int. Мы можем вызывать len(nums), и итерироваться по нему с помощью range и т.д.

    for _, num := range nums {
        total += num
    }
    fmt.Println(total)
}
func main() {

Вариативные функции можно вызывать обычным способом — с отдельными аргументами.

    sum(1, 2)
    sum(1, 2, 3)

Если у тебя уже есть несколько аргументов в слайсе, передай их в вариативную функцию с помощью синтаксиса func(slice...).

    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

Ещё одна важная особенность функций в Go — возможность создавать замыкания. Рассмотрим это далее.

Далее: .