Go por Exemplo: Funções Variádicas

Funções variádicas podem ser chamadas com qualquer número de argumentos à direita. Por exemplo, fmt.Println é uma função variádica comum.

package main
import "fmt"

Aqui temos uma função que irá pegar um número arbitrário de inteiros como argumentos.

func soma(nums ...int) {
    fmt.Print(nums, " ")
    total := 0
    for _, num := range nums {
        total += num
    }
    fmt.Println(total)
}
func main() {

Funções variádicas podem ser chamadas da forma usual com argumentos individuais.

    soma(1, 2)
    soma(1, 2, 3)

Se você já possui múltiplos argumentos em um slice, aplique-os em uma função variádica usando func(slice...) assim.

    nums := []int{1, 2, 3, 4}
    soma(nums...)
}
$ go run funções-variádicas.go
[1 2] 3
[1 2 3] 6
[1 2 3 4] 10

Outro aspecto fundamental das funções em Go são suas habilidades para formar closures, na qual vamos ver a seguir.

Próximo exemplo: Closures.