前書き
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")
}
この小さなプログラムは、i
が10
未満である間、反復する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
ステートメントを使用する場合の違いは、変数i
が5
と同等であると評価された場合、中断があってもコードが続行されることです。 出力を見てみましょう。
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
ループをより効果的に使用できます。