go中的label来自于 C/C++的的goto(问了下公司写C++的据说都不怎么用,容易导致程序运行混乱)
它的作用用过来标记某行;用goto 语句的时候,goto后边需要跟个标号,就知道跳转到哪一行;
例:
fmt.Println("皮卡丘")
goto KEDAYA
fmt.Println("火箭队")
KEDAYA:
fmt.Println("可达鸭")
//上面代码 执行到goto KEDAYA时候 直接跳到执行fmt.Println("可达鸭")
注意:
1.在go语言中标记了某行label 就必须使用到,不然会报错
2.一般情况下使用Label的有goto, continue,break,goto后面必须跟label的名称 continue,break可以不用
continue 用法:
KEDAYA:
for i :=1; i <5; i++ {
if i ==3 {
continue KEDAYA
}
fmt.Println(i)
}
break 用法:
KEDAYA:
for i :=1; i <5; i++ {
if i ==3 {
break KEDAYA
}
fmt.Println(i)
}
(有一说一,这玩意儿感觉很鸡肋,用了跟只用continue和break一样 )
3.Label可以声明在函数体的任何地方,作用范围也就在函数体内
4.嵌套函数的Label无法使用,外面的无法使用嵌套函数内的label,嵌套函数内也无法使用外面的label
5.不可以有两个相同名字的label,label名区分大小写的,label可以和变量名称一样(当然你要跟变量重名的话,你可能被别的程序员打死)
6.goto必须在变量声明之后,变量的声明没法被跳过