Goでループを操作するときにBreakステートメントとContinueステートメントを使用する

前書き

Goでfor loopsを使用すると、タスクを自動化して効率的に繰り返すことができます。

ループの動作とフローを制御する方法を学習すると、プログラム内のカスタマイズされたロジックが可能になります。 breakおよびcontinueステートメントを使用してループを制御できます。

ブレイクステートメント

Goでは、breakステートメントは現在のループの実行を終了します。 breakは、ほとんどの場合、conditional if statementとペアになっています。

forループでbreakステートメントを使用する例を見てみましょう。

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

この小さなプログラムは、i10未満である間、反復するforループを作成します。

forループ内に、ifステートメントがあります。 ifステートメントは、iの条件をテストして、値が5未満であるかどうかを確認します。 iの値が5と等しくない場合、ループは続行され、iの値が出力されます。 iの値が5と等しい場合、ループはbreakステートメントを実行し、それがBreaking out of loopであることを出力して、ループの実行を停止します。 プログラムの最後に、Exiting programを出力して、ループを終了したことを示します。

このコードを実行すると、出力は次のようになります。

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

これは、整数iが5と同等であると評価されると、プログラムがbreakステートメントでそうするように指示されているため、ループが中断することを示しています。

入れ子になったループ

breakステートメントは、呼び出された最も内側のループの実行のみを停止することを覚えておくことが重要です。 ループのネストされたセットがある場合、必要に応じてループごとにブレークが必要になります。

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

このプログラムには、2つのループがあります。 両方のループは5回繰り返されますが、それぞれにbreakステートメントを含む条件付きifステートメントがあります。 outerの値が3と等しい場合、外側のループは壊れます。 innerの値が2の場合、内部ループは中断します。

プログラムを実行すると、出力が表示されます。

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

内側のループが壊れるたびに、外側のループは壊れないことに注意してください。 これは、breakが呼び出された最も内側のループのみを中断するためです。

breakを使用すると、ループの実行がどのように停止するかを見てきました。 次に、ループの反復を継続する方法を見てみましょう。

声明を続ける

continueステートメントは、ループの残りの部分をスキップし、ループの先頭に戻って新しい反復を続行する場合に使用されます。

breakステートメントと同様に、continueステートメントは一般的に条件付きifステートメントで使用されます。

前のBreak Statementセクションと同じforループプログラムを使用して、breakステートメントではなくcontinueステートメントを使用します。

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

breakステートメントではなくcontinueステートメントを使用する場合の違いは、変数i5と同等であると評価された場合、中断があってもコードが続行されることです。 出力を見てみましょう。

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

ここでは、行The value of i is 5が出力に発生しないことがわかりますが、ループはその後も続き、ループを終了する前に6〜10の数字の行を出力します。

continueステートメントを使用して、深くネストされた条件付きコードを回避したり、拒否したい頻繁に発生するケースを排除してループを最適化したりできます。

continueステートメントを使用すると、プログラムはループ内で発生する特定の要素をスキップしますが、ループの残りの部分を続行します。

結論

Goのbreakおよびcontinueステートメントを使用すると、コードでforループをより効果的に使用できます。