Go语言学习之旅12——goto和标签

Go语言还是保留了goto这个功能的,但是不建议使用太多,因为会使得代码比较混乱,不易于后续的阅读和维护

goto可以无条件跳转执行的位置,但不能跨函数,需要配合标签label使用

先看这个例子:

1
2
3
4
5
6
7
8
9
10
11
12
func main() {
fmt.Println(1)
goto printThree
fmt.Println(2)
printThree:
fmt.Println(3)
}

/*result:
1
3
*/

如上所示,goto可以跳过代码直接执行标签位置的语句

不过标签还有一种使用方式,就是配合跳出多层循环,因为break只能跳出当前所在的循环,因此,我们可以配合标签使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func main() {
outer:
for {
fmt.Println(1)
for {
fmt.Println(2)
break outer
}
}
fmt.Println(3)
/*result:
1
2
3
*/
}