Go by Example: Variadic Functions

Funciones variádicas pueden ser llamadas con cualquier número de argumentos finales. Por ejemplo, fmt.Println es una función variádica común.

package main
import "fmt"

Aquí hay una función que tomará un número arbitrario de ints como argumentos.

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

Dentro de la función, el tipo de nums es equivalente a []int. Podemos llamar a len(nums), iterar sobre ella con range, etc.

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

Las funciones variádicas pueden ser llamadas de la manera usual con argumentos individuales.

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

Si ya tienes múltiples argumentos en un slice, aplícalos a una función variádica usando func(slice...) de esta manera.

    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

Otro aspecto clave de las funciones en Go es su capacidad para formar cierres (closures), lo cual veremos a continuación.

Siguiente ejemplo: Closures.