Sortir de boucles imbriquées
Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 2 sur 68.
Lorsque tu travailles avec des boucles imbriquées, une instruction break classique ne quitte que la boucle la plus interne. Cependant, Go fournit des étiquettes qui te permettent de sortir directement des boucles externes, ce qui te donne un contrôle précis sur les structures de boucles complexes.
Une étiquette est un identifiant suivi de deux-points que tu places avant une boucle. Tu peux ensuite utiliser break suivi du nom de l’étiquette pour sortir de cette boucle précise, même depuis des boucles imbriquées.
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 1 {
break outer
}
fmt.Printf("i=%d, j=%d\n", i, j)
}
}Dans cet exemple, lorsque la condition i == 1 && j == 1 est remplie, break outer quitte immédiatement les boucles interne et externe. C'est particulièrement utile lorsque tu parcours des structures de données 2D et que tu veux arrêter complètement la recherche dès que tu as trouvé ce que tu cherches.
Défi
FacileDans ce défi, tu vas t’entraîner à utiliser des instructions break étiquetées pour sortir de boucles imbriquées lors de la recherche dans une grille 2D. Tu dois trouver un nombre cible précis dans la grille et arrêter immédiatement la recherche dès que tu l’as trouvé.
Tu recevras deux entrées :
- Une chaîne représentant les dimensions de la grille au format
"rows,cols"(par exemple,"3,4") - Une chaîne représentant le nombre cible à rechercher (par exemple,
"7")
La grille 2D de nombres suivante est mise à ta disposition :
grid := [][]int{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
}Ta tâche consiste à :
- Utiliser les valeurs déjà lues pour toi dans le code ci-dessus :
rowsetcols(la partie de la grille à parcourir),targetetgrid - Utiliser des boucles imbriquées avec un
breakétiqueté pour parcourir la grille - Lorsque tu trouves le nombre cible, afficher
"Found [target] at position ([row], [col])"et sortir immédiatement des deux boucles à l’aide dubreakétiqueté - Si tu termines la recherche sans trouver la cible, afficher
"Target [target] not found"
La position doit être indiquée avec une indexation à partir de 0 (la première ligne est 0, la première colonne est 0).
Essayez vous-même
// TODO: Écrivez votre code ci-dessous
// Utilisez des boucles imbriquées avec un break étiqueté pour rechercher la cible
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Structures de contrôle avancées
Switch avec `fallthrough`Sortir de boucles imbriquéesContinuer une boucle spécifiqueL'instruction `goto`Récapitulatif - Contrôle de boucle avancé4Projet : Liste de tâches simple
Configuration du projetAjouter une tâche2Structures et Méthodes
Définir des méthodes sur des structuresReceveurs par valeurReceveurs par pointeurChoisir les receveursMéthodes vs FonctionsRécapitulatif - Comportement des structures5Les Maps en profondeur
Maps de StructsPointeurs comme valeurs de MapTester les Maps NilComparer des MapsRécapitulatif - Compteur de fréquence de mots3Interfaces (Les bases)
Qu'est-ce qu'une Interface ?Définir une InterfaceImplémenter une InterfaceUtiliser les types d'InterfaceInterface videAssertions de typeType SwitchRécapitulatif - Formes et comportementsEntraînez-vous par vous-même : Compilateur Go en ligne