Menu
Coddy logo textTech

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.

Ceci 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 l'intérieur d'une boucle interne, plutôt que de simplement continuer 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.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

challenge icon

Défi

Facile

Dans ce défi, vous allez vous entraîner à utiliser des instructions continue étiquetées pour contrôler l'exécution de boucles imbriquées. Vous construisez un système de traitement de données qui doit ignorer certaines itérations de la boucle externe en fonction de conditions trouvées dans les boucles internes.

Vous recevrez deux entrées :

  • Une chaîne représentant le nombre de lignes à traiter (par exemple, "4")
  • Une chaîne représentant un nombre de condition d'omission (par exemple, "3")

Vous disposez du tableau de données 2D suivant :

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}
}

Votre tâche consiste à :

  1. Analyser le nombre de lignes à partir de la première entrée pour déterminer combien de lignes traiter
  2. Analyser le nombre de condition d'omission à partir de la deuxième entrée
  3. Utiliser des boucles imbriquées avec un continue étiqueté pour traiter les données
  4. Pour chaque ligne, vérifier la valeur de chaque colonne dans cette ligne
  5. Si vous trouvez le nombre de condition d'omission dans n'importe quelle colonne d'une ligne, utilisez le continue étiqueté pour ignorer le reste du traitement de cette ligne et passer à la ligne suivante
  6. Pour les lignes qui ne contiennent pas le nombre de condition d'omission, affichez "Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]"
  7. Pour les lignes qui contiennent le nombre de condition d'omission, affichez "Skipping row [row_number] due to condition"

Les numéros de ligne doivent être rapportés en utilisant une indexation basée sur 0 (la première ligne est 0). Traitez uniquement le nombre de lignes spécifié dans la première entrée, et vérifiez uniquement les 5 premières colonnes de chaque ligne.

Aide-mémoire

Utilisez des étiquettes avec continue pour ignorer l'itération actuelle d'une boucle spécifique dans des boucles imbriquées :

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")
}

Lorsque continue outer est exécuté, il ignore le reste de l'itération actuelle de la boucle externe et passe directement à l'itération suivante de la boucle étiquetée.

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 un continue étiqueté pour traiter les données
    // Vérifiez chaque ligne pour le nombre de condition de saut
    // Imprimez les messages appropriés selon que la condition est trouvée ou non
    
}
quiz iconTestez-vous

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