Continuer une boucle spécifique
Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 3 sur 68.
Tout comme vous pouvez utiliser des étiquettes avec break pour quitter des boucles spécifiques, Go vous permet également d’utiliser des étiquettes avec l’instruction continue. Un continue étiqueté ignore l’itération actuelle de la boucle spécifiée et passe à son itération suivante.
Cela est particulièrement utile dans les boucles imbriquées lorsque vous souhaitez ignorer le reste de l’itération actuelle d’une boucle externe depuis une boucle interne, plutôt que de simplement poursuivre la boucle interne.
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 0 {
continue outer
}
fmt.Printf("i=%d, j=%d\n", i, j)
}
fmt.Println("End of outer loop iteration")
}Dans cet exemple, lorsque i == 1 && j == 0, l’instruction continue outer ignore le reste de l’itération actuelle de la boucle externe, y compris la boucle interne et le message « End of outer loop iteration ». Le programme passe ensuite directement à l’itération suivante de la boucle externe, où i devient 2.
Défi
FacileDans ce défi, tu vas t’entraîner à utiliser des instructions continue étiquetées pour contrôler l’exécution de boucles imbriquées. Tu construis un système de traitement des données qui doit ignorer certaines itérations de la boucle externe en fonction de conditions trouvées dans les boucles internes.
Tu recevras deux entrées :
- Une chaîne représentant le nombre de lignes à traiter (par exemple,
"4") - Une chaîne représentant le numéro de la condition d’ignorance (par exemple,
"3")
Le tableau de données 2D suivant t’est fourni :
data := [][]int{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}
}Ta tâche consiste à :
- Analyser le nombre de lignes à partir de la première entrée afin de déterminer combien de lignes traiter
- Analyser le numéro de la condition d’ignorance à partir de la deuxième entrée
- Utiliser des boucles imbriquées avec une instruction
continueétiquetée pour traiter les données - Pour chaque ligne, vérifier chaque valeur de colonne de cette ligne
- Si tu trouves le numéro de la condition d’ignorance dans une colonne d’une ligne, utiliser
continueétiqueté pour ignorer le reste du traitement de cette ligne et passer à la ligne suivante - Pour les lignes qui ne contiennent pas le numéro de la condition d’ignorance, afficher
"Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]" - Pour les lignes qui contiennent le numéro de la condition d’ignorance, afficher
"Skipping row [row_number] due to condition"
Les numéros de ligne doivent être indiqués en utilisant une indexation basée sur 0 (la première ligne est 0). Traite uniquement le nombre de lignes spécifié dans la première entrée et vérifie uniquement les 5 premières colonnes de chaque ligne.
Essayez vous-même
package main
import (
"fmt"
"strconv"
)
func main() {
// Lire l'entrée
var rowsInput string
var skipConditionInput string
fmt.Scanln(&rowsInput)
fmt.Scanln(&skipConditionInput)
// Analyser les entrées
numRows, _ := strconv.Atoi(rowsInput)
skipCondition, _ := strconv.Atoi(skipConditionInput)
// Tableau de données 2D fourni
data := [][]int{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25},
}
// TODO: Écrivez votre code ci-dessous
// Utilisez des boucles imbriquées avec continue étiqueté pour traiter les données
// Vérifiez chaque ligne pour le numéro de condition de saut
// Affichez les messages appropriés selon que la condition est trouvée ou non
}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