break ステートメントは switch/select から抜けますか? 質問する

break ステートメントは switch/select から抜けますか? 質問する

switch/ステートメントは各ケースの後に自動的にブレークすることは知っていますselect。次のコードで疑問に思うことがあります。

for {
    switch sometest() {
    case 0:
        dosomething()
    case 1:
        break
    default:
        dosomethingelse()
    }
}

breakステートメントはループを終了しますforか、それともブロックだけを終了しますかswitch?

ベストアンサー1

Break ステートメント、Go プログラミング言語仕様。

「break」ステートメントは、最も内側の「for」、「switch」、または「select」ステートメントの実行を終了します。

BreakStmt = "break" [ Label ] .

ラベルがある場合、それは囲んでいる「for」、「switch」、または「select」ステートメントのラベルである必要があり、その実行は終了します (§For ステートメント、§Switch ステートメント、§Select ステートメント)。

L:
  for i < n {
      switch i {
      case 5:
          break L
      }
  }

したがって、break例のステートメントは、ステートメントswitch、つまり「最も内側の」ステートメントを終了します。

おすすめ記事