一尘不染

在Go中,break语句是否从switch / select中断?

go

我知道在每种情况下switch/ select语句都会自动中断。我想知道以下代码:

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

是否break声明退出for循环或只是switch块?


阅读 257

收藏
2020-07-02

共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语句终止该语句,即“最内层”语句。

2020-07-02