go中的label來自于?C/C++的的goto(問了下公司寫C++的據(jù)說都不怎么用令漂,容易導(dǎo)致程序運(yùn)行混亂)
它的作用用過來標(biāo)記某行姐叁;用goto 語句的時候,goto后邊需要跟個標(biāo)號洗显,就知道跳轉(zhuǎn)到哪一行;
例:
fmt.Println("皮卡丘")
goto KEDAYA
fmt.Println("火箭隊")
KEDAYA:
fmt.Println("可達(dá)鴨")
//上面代碼 執(zhí)行到goto KEDAYA時候? 直接跳到執(zhí)行fmt.Println("可達(dá)鴨")
注意:
1.在go語言中標(biāo)記了某行l(wèi)abel 就必須使用到原环,不然會報錯
2.一般情況下使用Label的有g(shù)oto, 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可以聲明在函數(shù)體的任何地方谒麦,作用范圍也就在函數(shù)體內(nèi)
4.嵌套函數(shù)的Label無法使用俄讹,外面的無法使用嵌套函數(shù)內(nèi)的label,嵌套函數(shù)內(nèi)也無法使用外面的label
5.不可以有兩個相同名字的label绕德,label名區(qū)分大小寫的患膛,label可以和變量名稱一樣(當(dāng)然你要跟變量重名的話,你可能被別的程序員打死)
6.goto必須在變量聲明之后耻蛇,變量的聲明沒法被跳過