Structures de contrôle
for, la seule boucle
Contrairement à la plupart des langages, Go n'a ni `while` ni `do-while` : tout se fait avec `for`. La forme la plus proche d'un `for` classique en C ressemble à ceci.
for i := 0; i < 5; i++ { fmt.Println(i)}// affiche 0, 1, 2, 3, 4En omettant l'initialisation et l'incrément, il ne reste qu'une condition : c'est l'équivalent d'un `while`.
count := 0for count < 3 { fmt.Println(count) count++}Sans aucune condition, `for` boucle indéfiniment ; on en sort avec `break`. Et pour parcourir une collection (slice, tableau, map, string), on utilise `for ... range`, qui renvoie l'index et la valeur à chaque itération.
fruits := []string{"pomme", "poire", "kiwi"} for index, fruit := range fruits { fmt.Println(index, fruit)}// 0 pomme// 1 poire// 2 kiwi for { fmt.Println("boucle infinie") break // indispensable pour ne pas boucler éternellement}Si tu n'as besoin que de la valeur, pas de l'index, remplace-le par `_` : `for _, fruit := range fruits`. Une variable déclarée et jamais lue est une erreur de compilation, même dans une boucle.
À toi de jouer
Écris une fonction `sum(numbers []int) int` qui additionne tous les éléments d'un slice d'entiers avec un `for range`.
func sum(numbers []int) int { // à compléter}