我想弄清楚标签是如何分解的。
我希望以下程序永远保持打印“在if语句中”。这是因为break here
语句将代码执行带回到循环的开头,然后应该反复执行。
但是,此代码仅执行一次。我在这里缺少什么?
package main
import "fmt"
func main() {
here:
for {
fmt.Println("In if statement")
break here
}
fmt.Println("At the bottom")
}
执行结果:
In if statement
At the bottom
Program exited.
答案 0 :(得分:8)
这是因为break here语句将代码执行带回到循环的开头
不,这不是什么休息。这不是一个转到。 退出标有标签的循环。 循环后继续执行。
在这个特定的例子中,标签是不必要的,你可以通过默认情况下突破最里面的循环(没有标签)得到相同的结果。
答案 1 :(得分:8)
来自break statements上的go规范:
如果有标签,则必须是封闭的"对于","开关"或"选择"声明,是执行终止的。
break
语句不会将代码带回标签,它会关闭标签引用的循环。所以一切都很好......