Leçons du module (2/5)
for : l'unique boucle
Go a une construction à boucle unique : for. Non while, non
do-while, pas de foreach (qui arrive dans la prochaine leçon avec
range). Un seul mot clé couvre tous les cas grâce à trois formulaires.
Les trois formes de for
Formulaire classique à trois clauses
Identique à C/Java :
for i := 0; i < 5; i++ {
fmt.Println(i)
}i a une portée limitée au for. Les trois clauses sont facultatives (vous pouvez
omettez-en un) mais le ; reste si vous en omettez un intermédiaire.
Forme "while" : condition uniquement
En Go, while est simplement un for avec une seule expression bool :
i := 0
for i < 5 {
fmt.Println(i)
i++
}Forme infinie
Sans clauses, la boucle ne se termine jamais (sauf break/return) :
for {
if exitCondition() {
break
}
doWork()
}C'est le modèle pour les boucles de gestion des événements, les serveurs et les politiques de nouvelle tentative.
break, continue et étiquettes
break quitte la boucle la plus interne, continue passe à l'itération suivante :
for i := 0; i < 10; i++ {
if i%2 == 0 {
continue // salta i pari
}
if i > 7 {
break // ferma il ciclo
}
fmt.Println(i) // 1 3 5 7
}Pour quitter les boucles imbriquées, il existe des labels (rares mais utiles) :
Esterno:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i*j == 4 {
break Esterno // esce da entrambi
}
}
}Pas d'opérateur , comme en C
En Go, vous ne pouvez pas écrire for i, j := 0, 10; i < j; i, j = i+1, j-1 :
l'expression de publication n'accepte pas plusieurs affectations. Utilisez Go
syntaxe d'affectation multiple :
for i, j := 0, 10; i < j; i, j = i+1, j-1 {
fmt.Println(i, j)
}À la place, cela fonctionne car i, j = i+1, j-1 est un seul
mission multiple.
Essayez-le
Imprimez les nombres de 0 à 4 inclus avec un classique à trois clauses pour.
Afficher l'indice
`for init; cond; post { ... }` — ici, init est `i := 0`.
Solution disponible après 3 tentatives
Additionnez au total tous les nombres de 1 à 10 inclus en utilisant la forme « tandis que » pour.
Afficher l'indice
Forme 'pendant' : `for <condition> { ... }`.
Solution disponible après 3 tentatives
Quelle forme représente une boucle infinie dans Go ?
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }Récapitulatif
- Un seul mot-clé
forà trois formes : classique, while, infini. break/continueavec éventuellement une étiquette pour boucles imbriquées.- Etiqueter
Name:avant lefor, à utiliser avec parcimonie. - Pas de
,en tant qu'opérateur : utilisez l'affectation multiplei, j = ..., ....