Goでは、 break
and continue
ステートメントを使用して、 for
、 range
、 switch
などのループのフローを制御します。これらがどのように機能するかは次のとおりです。
ブレークステートメント:
break
ステートメントは、ループの実行を早期に終了するために使用されます。ループ内でbreak
が発生すると、ループはすぐに終了し、ループに続く次のステートメントでプログラム制御が再開されます。
<code class="go">for i := 0; i </code>
この例では、ループは番号0〜4を印刷し、5にi
たときに終了します。
続行ステートメント:
continue
ステートメントは、ループの現在のイテレーションの残りの部分をスキップし、次のイテレーションに進むために使用されます。ループ内でcontinue
が発生すると、現在の反復が放棄され、ループは次のイテレーションで進行します。
<code class="go">for i := 0; i </code>
この例では、ループは数値0〜4および6〜9を印刷し、5をスキップします。
break
とcontinue
両方をネストされたループ内で使用できます。ただし、外側のループを制御するためにラベルとともに使用されない限り、一部の内側のループにのみ影響します。
break
ステートメントは、次のシナリオでGOプログラミングで一般的に使用されます。
無限ループの終了:特定の条件下で停止できる無限のループを作成する場合、ループを終了するためにbreak
を使用できます。
<code class="go">for { input := getInput() if input == "exit" { break } processInput(input) }</code>
コレクションの検索:コレクションを反復して(配列やスライスなど)、特定の要素を見つける必要がある場合、要素が見つかったら検索を停止するためにbreak
を使用できます。
<code class="go">numbers := []int{1, 2, 3, 4, 5} target := 3 for _, num := range numbers { if num == target { fmt.Println("Found:", target) break } }</code>
スイッチステートメントでのケースマッチング: GOのbreak
ステートメントは、 switch
ステートメントの各ケースの最後に暗黙的に追加されますが、 switch
ステートメントで明示的に使用して、 switch
構造全体を早期に終了できます。
<code class="go">switch num := 3; num { case 1: fmt.Println("One") case 2: fmt.Println("Two") case 3: fmt.Println("Three") break // Not needed explicitly here but can be used in some scenarios default: fmt.Println("Other") }</code>
ネストされたループからの脱出:ラベルを使用すると、 break
を使用してネストされたループから出ることができます。
<code class="go">OuterLoop: for i := 0; i </code>
GOのcontinue
ステートメントは、次の方法でループの実行に直接影響します。
現在の反復スキップ:ループの本体内でcontinue
が発生すると、すぐにループの次の反復にジャンプします。同じ反復内でcontinue
後のステートメントがスキップされます。
<code class="go">for i := 0; i </code>
この例では、出力は0
3
4
ます1
continue
ステートメントにより、 i
2
ときに現在の反復が放棄されるため、数字2
がスキップされます。
ネストされたループ内: continue
ステートメントは、表示される内側のループのみに影響します。外側のループには影響しません。
<code class="go">for i := 0; i </code>
この例では、 j
1
等しい場合、内側のループの現在の反復がスキップされ、次のj
値に移動します。外側のループは通常どおり続きます。
ループ処理の効率: continue
、ループ内の不必要な処理または処理の例外をスキップするのに役立ち、ループの効率を改善します。
<code class="go">numbers := []int{1, -2, 3, -4, 5} for _, num := range numbers { if num </code>
この場合、負の数はスキップされ、正の数のみが印刷され、より効率的なループ処理が行われます。
GOループのbreak
ステートメントとcontinue
ステートメントの重要な違いは次のとおりです。
ループの実行への影響:
break
すぐにループ全体を終了し、ループを終了し、ループに続いて次のステートメントに移動します。continue
し、ループの次の反復に移動します。使用事例:
break
は、特定の条件を満たしているときにループを完全に終了する必要がある場合に使用されます(たとえば、要素を見つける、制限に達する)。continue
、現在の反復をスキップするときに使用されますが、ループを続行します(たとえば、特定の値をスキップして、不必要な処理を回避します)。ネストされたループへの影響:
break
continue
、それらの一部である最も内側のループにのみ影響します。break
任意の外部ループを終了できますが、 continue
外側のループの次の反復にスキップできます。制御フロー:
break
、ループを終了することにより制御フローを変更します。これは、早期終了によく使用されます。continue
ループのフローを維持しますが、フィルタリングまたは選択的処理に役立つ現在の反復を変更します。これは、表形式の概要です。
側面 | break |
continue
|
---|---|---|
ループ実行効果 | すぐにループを終了します | 現在の反復の残りをスキップします |
典型的なユースケース | 条件でループを終了します | 特定の条件下で反復をスキップします |
ネストされたループへの影響 | 最も内側のループのみに影響します(ラベル付けされていない限り) | 最も内側のループのみに影響します(ラベル付けされていない限り) |
制御フローの変化 | ループを終了します | 次の反復に移動します |
これらの違いを理解することは、GOでループの動作を効果的に制御するための正しいステートメントを選択するのに役立ちます。
以上がGoのBreak and Continueステートメントをどのように使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。