Verwenden von Break and Continue-Anweisungen beim Arbeiten mit Loops in Go

Einführung

Mitfor loops in Go können Sie Aufgaben effizient automatisieren und wiederholen.

Wenn Sie lernen, wie Sie den Betrieb und den Ablauf von Schleifen steuern, können Sie die Logik in Ihrem Programm anpassen. Sie können Ihre Schleifen mit den Anweisungenbreak undcontinue steuern.

Break-Anweisung

In Go beendet die Anweisungbreak die Ausführung der aktuellen Schleife. Abreak wird fast immer mit aconditional if statement gepaart.

Schauen wir uns ein Beispiel an, das die Anweisungbreakin einer Schleife vonforverwendet:

break.go

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i == 5 {
            fmt.Println("Breaking out of loop")
            break // break here
        }
        fmt.Println("The value of i is", i)
    }
    fmt.Println("Exiting program")
}

Dieses kleine Programm erstellt einefor-Schleife, die iteriert, währendi kleiner als10 ist.

Innerhalb derfor-Schleife gibt es eineif-Anweisung. Die Anweisungif testet die Bedingung voni, um festzustellen, ob der Wert kleiner als5 ist. Wenn der Wert voni nicht gleich5 ist, wird die Schleife fortgesetzt und der Wert voni ausgedruckt. Wenn der Wert voni gleich5 ist, führt die Schleife die Anweisungbreak aus, gibt aus, dass es sich umBreaking out of loop handelt, und beendet die Ausführung der Schleife. Am Ende des Programms drucken wirExiting program aus, um anzuzeigen, dass wir die Schleife verlassen haben.

Wenn wir diesen Code ausführen, erhalten wir folgende Ausgabe:

OutputThe value of i is 0
The value of i is 1
The value of i is 2
The value of i is 3
The value of i is 4
Breaking out of loop
Exiting program

Dies zeigt, dass, sobald die Ganzzahli als äquivalent zu 5 ausgewertet wird, die Schleife unterbrochen wird, da das Programm mit der Anweisungbreak dazu aufgefordert wird.

Verschachtelte Schleifen

Es ist wichtig zu beachten, dass die Anweisungbreaknur die Ausführung der innersten Schleife stoppt, in der sie aufgerufen wird. Wenn Sie eine verschachtelte Gruppe von Schleifen haben, benötigen Sie bei Bedarf eine Unterbrechung für jede Schleife.

nested.go

package main

import "fmt"

func main() {
    for outer := 0; outer < 5; outer++ {
        if outer == 3 {
            fmt.Println("Breaking out of outer loop")
            break // break here
        }
        fmt.Println("The value of outer is", outer)
        for inner := 0; inner < 5; inner++ {
            if inner == 2 {
                fmt.Println("Breaking out of inner loop")
                break // break here
            }
            fmt.Println("The value of inner is", inner)
        }
    }
    fmt.Println("Exiting program")
}

In diesem Programm haben wir zwei Schleifen. Während beide Schleifen fünfmal iterieren, hat jede eine bedingteif-Anweisung mit einerbreak-Anweisung. Die äußere Schleife wird unterbrochen, wenn der Wert vonouter gleich3 ist. Die innere Schleife wird unterbrochen, wenn der Wert voninner2 ist.

Wenn wir das Programm ausführen, können wir die Ausgabe sehen:

OutputThe value of outer is 0
The value of inner is 0
The value of inner is 1
Breaking out of inner loop
The value of outer is 1
The value of inner is 0
The value of inner is 1
Breaking out of inner loop
The value of outer is 2
The value of inner is 0
The value of inner is 1
Breaking out of inner loop
Breaking out of outer loop
Exiting program

Beachten Sie, dass bei jeder Unterbrechung der inneren Schleife die äußere Schleife nicht unterbrochen wird. Dies liegt daran, dassbreak nur die innerste Schleife unterbricht, von der es aufgerufen wird.

Wir haben gesehen, wie die Verwendung vonbreak die Ausführung einer Schleife stoppt. Schauen wir uns als nächstes an, wie wir die Iteration einer Schleife fortsetzen können.

Continue-Anweisung

Die Anweisungcontinue wird verwendet, wenn Sie den verbleibenden Teil der Schleife überspringen und zum Anfang der Schleife zurückkehren und eine neue Iteration fortsetzen möchten.

Wie bei der Anweisungbreak wird die Anweisungcontinuehäufig mit einer bedingten Anweisungifverwendet.

Unter Verwendung des gleichenfor-Schleifenprogramms wie im vorhergehenden AbschnittBreak Statement verwenden wir einecontinue-Anweisung anstelle einerbreak-Anweisung:

continue.go

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i == 5 {
            fmt.Println("Continuing loop")
            continue // break here
        }
        fmt.Println("The value of i is", i)
    }
    fmt.Println("Exiting program")
}

Der Unterschied bei der Verwendung dercontinue-Anweisung anstelle einerbreak-Anweisung besteht darin, dass unser Code trotz der Unterbrechung fortgesetzt wird, wenn die Variablei als äquivalent zu5 bewertet wird. Schauen wir uns unsere Ergebnisse an:

OutputThe value of i is 0
The value of i is 1
The value of i is 2
The value of i is 3
The value of i is 4
Continuing loop
The value of i is 6
The value of i is 7
The value of i is 8
The value of i is 9
Exiting program

Hier sehen wir, dass die ZeileThe value of i is 5 in der Ausgabe nie vorkommt, aber die Schleife wird nach diesem Punkt fortgesetzt, um Zeilen für die Zahlen 6-10 zu drucken, bevor die Schleife verlassen wird.

Sie können die Anweisungcontinueverwenden, um tief verschachtelten bedingten Code zu vermeiden oder eine Schleife zu optimieren, indem Sie häufig auftretende Fälle eliminieren, die Sie ablehnen möchten.

Die Anweisungcontinue bewirkt, dass ein Programm bestimmte Faktoren überspringt, die innerhalb einer Schleife auftreten, und dann den Rest der Schleife durchläuft.

Fazit

Mit den Anweisungenbreak undcontinue in Go können Siefor-Schleifen effektiver in Ihrem Code verwenden.