Fonctions Variadiques

Fonctions variadiques #

// Les [_fonctions variadiques_](https://fr.wikipedia.org/wiki/Fonction_variadique)
// peuvent être appelées avec n'importe quel nombre
// d'arguments. Par exemple `fmt.Println` est une
// fonction variadique courante.

package main

import "fmt"

// Voici une fonction qui va prendre un nombre arbitraire
// d'`ints` comme arguments.
func sum(nums ...int) {
    fmt.Print(nums, " ")
    total := 0
    for _, num := range nums {
        total += num
    }
    fmt.Println(total)
}

func main() {

    // Les fonctions variadiques peuvent être appelées de
    // la manière habituelle, avec des arguments
    // individuels.
    sum(1, 2)
    sum(1, 2, 3)

    // Si vous avez déjà plusieurs arguments dans une
    // slice, vous pouvez les appliquer à la fonction
    // variadique en utilisant `func(slice...)`
    // comme ceci.
    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

# Un autre aspect clé des fonctions en Go, c'est la 
# possibilité d'en faire des closures, ce que nous allons
# regarder ensuite.