我知道switch/select语句在每种情况下都会自动中断。我想知道,在以下代码中:
switch
select
for { switch sometest() { case 0: dosomething() case 1: break default: dosomethingelse() } }
是否break声明退出for循环或只是switch块?
break
for
“break”语句终止最里面的“for”、“switch”或“select”语句的执行。 golang BreakStmt = "break" [ Label ] . 如果有标签,它必须是封闭的“for”、“switch”或“select”语句的标签,并且它是执行终止的语句(§For 语句、§Switch 语句、§Select 语句)。 golang L: for i < n { switch i { case 5: break L } }
“break”语句终止最里面的“for”、“switch”或“select”语句的执行。
golang BreakStmt = "break" [ Label ] .
如果有标签,它必须是封闭的“for”、“switch”或“select”语句的标签,并且它是执行终止的语句(§For 语句、§Switch 语句、§Select 语句)。
golang L: for i < n { switch i { case 5: break L } }
因此,break您示例中的switch语句终止了该语句,即“最内层”语句。
“break”语句终止同一函数内最里面的 “for”、 “switch”或 “select”语句的执行。
BreakStmt = "break" [ 标签 ] 。
如果有一个标签,它必须是一个封闭的“for”、“switch”或“select”语句的标签,它就是执行终止的那个。
OuterLoop: for i = 0; i < n; i++ { for j = 0; j < m; j++ { switch a[i][j] { case nil: state = Error break OuterLoop case item: state = Found break OuterLoop } } }