go break select for LABEL
阿新 • • 發佈:2019-02-04
22
I know that switch
/select
statements break automatically after every case. I am wondering, in the following code:
for {
switch sometest() {
case 0:
dosomething()
case 1:
break
default:
dosomethingelse()
}
}
Does the break
statement exit the for
loop or just the switch
asked Jun 19 '12 at 15:16
9,254104491
7 Answers
A "break" statement terminates execution of the innermost "for", "switch" or "select" statement.
BreakStmt = "break" [ Label ] .
If there is a label, it must be that of an enclosing "for", "switch" or "select" statement, and that is the one whose execution terminates (§For statements, §Switch statements, §Select statements).
L: for i < n { switch i { case 5: break L } }
Therefore, the break
statement in your example terminates the switch
statement, the "innermost" statement.
answered Jun 19 '12 at 16:41
83.7k13149164
A hopefully illustrative example:
loop: for { switch expr { case foo: if condA { doA() break // like 'goto A' } if condB { doB() break loop // like 'goto B' } doC() case bar: // ... } A: doX() // ... } B: doY() // ....