Golang 8 : Les boucles
Les boucles
Les boucles sont utilisées pour exécuter un bloc de code. Go n'a pas de boucles while ou do while qui sont disponibles pour d'autres langages.
Le syntaxe des boucles
for initialisation; condition; post {
}
La déclaration initialisation ne sera exécutée qu'une seule fois. Après que la boucle soit initialisée, la condition va être vérifiée. Si la condition est vraie, alors le corps de la boucle qui se trouve entre {
}
va être exécuté suivi d'une déclaration post. La déclaration post va être exécutée après chaque itération de la boucle. Après que la déclaration post soit exécutée, la condition est revérifiée. L'itération continue tant que la condition est vraie.
Les trois composants initialisation, condition, post sont tous optionnels en Go. Voici un exemple pour mieux comprendre les boucles.
Exemple:
package main
import (
"fmt"
)
func main() {
for i := 1; i <= 5; i++ {
fmt.Printf(" %d",i)
}
}
Dans le programme ci-dessus, i est initialisé à 1. La déclaration conditionnelle va vérifier si i<=5
, si celle-là est bien vérifiée, la valeur de i va être affichée, puis la déclaration post va incrémenter i de 1 à la fin de chaque itération. Une fois i devient supérieur à 5, on sort de la boucle.
Le programme ci-dessus va afficher 1 2 3 4 5
Les variables déclarées à l'intérieur de la boucle ne sont disponibles qu'à l'intérieur de la boucle.
break
La déclaration break est utilisée pour sortir de la boucle for avant que son exécution normale soit terminée pour passer directement à la ligne de code qui vient juste après la boucle for.
Voici un programme où break intervient:
package main
import (
"fmt"
)
func main() {
for i := 1; i <= 10; i++ {
if i > 5 {
break //loop is terminated if i > 5
}
fmt.Printf("%d ", i)
}
fmt.Printf("\nla ligne juste après la boucle for")
}
Dans le programme ci-dessus, la valeur de i est vérifiée à chaque itération, une fois i devient strictement supérieur à 5, on sort de la boucle pour exécuter la déclaration d'affichage. La sortie du programme serait:
1 2 3 4 5
la ligne juste après la boucle for
Continue
La déclaration continue
est utilisée pour sauter l'itération courante de la boucle for. tout le code qui vient après continue ne sera pas exécuté pour l'itération courante. La boucle va sauter à l'itération suivante.
Voici un programme qui affiche tous les nombres impairs de 1 à 10.
package main
import (
"fmt"
)
func main() {
for i := 1; i <= 10; i++ {
if i%2 == 0 {
continue
}
fmt.Printf("%d ", i)
}
}
Dans le programme ci-dessus, seuls les nombres impairs sont affichés, une fois i%2 == 0 est vérifiée, ce qui reste du code à l'intérieur de la boucle n'est pas exécuté, par conséquent, on passe à la prochaine itération.
Par conséquent, la sortie du programme est 1 3 5 7 9
Exemples:
Le programme suivant affiche tous les nombres compris entre 0 et 10.
package main
import (
"fmt"
)
func main() {
i := 0
for ;i <= 10; {
fmt.Printf("%d ", i)
i += 2
}
}
Dans le programme ci-dessus, l'incrémentation est faite à 2, c'est la raison pour laquelle cela est indiqué à l'intérieur de la boucle.
Les points virgules dans la boucle for peuvent être enlevés, ce qui sert d'alternative pour la boucle while. Le programme ci-dessus peut être réécrit comme suivant:
package main
import (
"fmt"
)
func main() {
i := 0
for i <= 10 { //les points virgules sont enlevés et seule la condition est présente
fmt.Printf("%d ", i)
i += 2
}
}
Boucle infinie
Le syntaxe pour créer une boucle infinie est:
for{
}
Le programme suivant va afficher Hello world
sans cesse:
package main
import "fmt"
func main() {
for {
fmt.Println("Hello World")
}
}
Si vous essayez d'exécuter ce programme dans go playground, vous allez avoir une erreur "process took too long".
Posted on Utopian.io - Rewarding Open Source Contributors
Thank you for the contribution. It has been approved.
You can contact us on Discord.
[utopian-moderator]
Hey @raptorjesus I am @utopian-io. I have just upvoted you!
Achievements
Suggestions
Get Noticed!
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!
Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x