Réplication du comportement de la boucle do-while dans Go
Les boucles Do-while, couramment utilisées dans des langages comme Java, exécutent un bloc de code jusqu’à ce qu’une condition spécifique soit remplie. Bien que Go ne dispose pas d'une syntaxe explicite do-while, il existe d'autres moyens d'obtenir ce comportement.
Considérez l'exemple fourni : un programme qui présente aux utilisateurs des options pour l'exécuter à nouveau ou le quitter. Ce scénario peut être répliqué en utilisant une combinaison de boucle for et de structure de cas de commutation.
Comprendre le code d'origine
Le code fourni comprend une boucle for qui commence par var i = 1 et utilise i > 0 comme condition de boucle. Cependant, cela crée une boucle infinie car i n'est jamais modifié dans la boucle.
Émulation du comportement do-while
Dans Go, vous pouvez émuler des boucles do-while en utilisant une boucle for avec une variable de boucle booléenne initialisée avec true. Cette boucle continuera à s'exécuter jusqu'à ce que la variable de boucle devienne fausse.
Voici un extrait de code qui implémente l'exemple en utilisant cette approche :
var input int for ok := true; ok; ok = (input != 2) { // ... (same logic as before, options 1, 2, default case) }
Dans ce code, ok est la variable de boucle booléenne. Il restera vrai jusqu'à ce que l'utilisateur entre la valeur 2 (indiquant le désir de quitter le programme), auquel cas il deviendra faux et quittera la boucle.
Avantages de l'utilisation de la sortie explicite de boucle
Bien que l'émulation do-while puisse être utile, elle est généralement considérée comme plus explicite et plus facile à maintenir pour utiliser des instructions étiquetées break, return ou os.Exit. pour terminer les boucles lorsque des conditions spécifiques sont remplies. Cette approche permet un flux de contrôle plus clair et évite toute confusion potentielle ou conditions de boucle cachée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!