Menu
Coddy logo textTech

Fortsetzen einer bestimmten Schleife

Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy — Lektion 3 von 68.

Genauso wie Sie Labels mit break verwenden können, um bestimmte Schleifen zu beenden, erlaubt Go Ihnen auch, Labels mit der continue-Anweisung zu verwenden. Ein benanntes continue überspringt die aktuelle Iteration der angegebenen Schleife und springt zu deren nächsten Iteration.

Dies ist besonders nützlich in verschachtelten Schleifen, wenn Sie den Rest der aktuellen Iteration einer äußeren Schleife aus einer inneren Schleife heraus überspringen möchten, anstatt nur die innere Schleife fortzusetzen.

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

In diesem Beispiel überspringt die continue outer-Anweisung, wenn i == 1 && j == 0 gilt, den Rest der aktuellen Iteration der äußeren Schleife, einschließlich der inneren Schleife und der Nachricht "End of outer loop iteration". Das Programm fährt dann direkt mit der nächsten Iteration der äußeren Schleife fort, in der i zu 2 wird.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

challenge icon

Aufgabe

Einfach

In dieser Herausforderung üben Sie die Verwendung von benannten continue-Anweisungen zur Steuerung der Ausführung verschachtelter Schleifen. Sie bauen ein Datenverarbeitungssystem auf, das bestimmte Iterationen der äußeren Schleife basierend auf Bedingungen in inneren Schleifen überspringen muss.

Sie erhalten zwei Eingaben:

  • Einen String, der die Anzahl der zu verarbeitenden Zeilen darstellt (z. B. "4")
  • Einen String, der eine Skip-Bedingungszahl darstellt (z. B. "3")

Ihnen wird das folgende 2D-Datenarray zur Verfügung gestellt:

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

Ihre Aufgabe ist es:

  1. Die Anzahl der Zeilen aus der ersten Eingabe zu parsen, um zu bestimmen, wie viele Zeilen verarbeitet werden sollen
  2. Die Skip-Bedingungszahl aus der zweiten Eingabe zu parsen
  3. Verschachtelte Schleifen mit einem benannten continue zu verwenden, um die Daten zu verarbeiten
  4. Für jede Zeile jeden Spaltenwert in dieser Zeile zu prüfen
  5. Wenn Sie die Skip-Bedingungszahl in einer Spalte einer Zeile finden, verwenden Sie das benannte continue, um den Rest der Verarbeitung dieser Zeile zu überspringen und zur nächsten Zeile überzugehen
  6. Für Zeilen, die die Skip-Bedingungszahl nicht enthalten, geben Sie "Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]" aus
  7. Für Zeilen, die die Skip-Bedingungszahl enthalten, geben Sie "Skipping row [row_number] due to condition" aus

Die Zeilennummern sollten unter Verwendung einer 0-basierten Indizierung angegeben werden (die erste Zeile ist 0). Verarbeiten Sie nur die in der ersten Eingabe angegebene Anzahl von Zeilen und prüfen Sie nur die ersten 5 Spalten jeder Zeile.

Spickzettel

Verwenden Sie Labels mit continue, um die aktuelle Iteration einer bestimmten Schleife in verschachtelten Schleifen zu überspringen:

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

Wenn continue outer ausgeführt wird, überspringt es den Rest der aktuellen Iteration der äußeren Schleife und springt direkt zur nächsten Iteration der markierten Schleife.

Probier es selbst

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Eingabe lesen
    var rowsInput string
    var skipConditionInput string
    fmt.Scanln(&rowsInput)
    fmt.Scanln(&skipConditionInput)
    
    // Eingaben parsen
    numRows, _ := strconv.Atoi(rowsInput)
    skipCondition, _ := strconv.Atoi(skipConditionInput)
    
    // Bereitgestelltes 2D-Datenarray
    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: Schreiben Sie Ihren Code unten
    // Verwenden Sie verschachtelte Schleifen mit markiertem continue, um die Daten zu verarbeiten
    // Überprüfen Sie jede Zeile auf die Nummer der Skip-Bedingung
    // Geben Sie entsprechende Meldungen aus, je nachdem, ob die Bedingung gefunden wurde
    
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf