與其他語言一樣,Go語言也支持label(標(biāo)簽)語法:
分別是break label和 goto label
這樣使得編程時(shí)變得異常靈活,但是由于在大項(xiàng)目中不好控制,所以建議能不使用goto label就不要使用
break label 和 goto label都能在循環(huán)中跳出循環(huán),但是又有些不同之處。
首先說下break label,break的跳轉(zhuǎn)標(biāo)簽(label)必須放在循環(huán)語句for前面,并且在break label跳出循環(huán)不再執(zhí)行for循環(huán)里的代碼。
![](/d/20211017/47833b89fb774e2abc88543f9f3e8ff1.gif)
當(dāng)我們把標(biāo)簽定義在break的下面時(shí),
我們會(huì)發(fā)現(xiàn)運(yùn)行時(shí)報(bào)錯(cuò)
![](/d/20211017/d834bdc4ea9268c5f0298586b6c53ecb.gif)
另外:break標(biāo)簽只能用于for循環(huán)
![](/d/20211017/e0dba753b2b903b4e17f17a4bf07d5cd.gif)
而goto label的label(標(biāo)簽)既可以定義在for循環(huán)前面,也可以定義在for循環(huán)后面,當(dāng)跳轉(zhuǎn)到標(biāo)簽地方時(shí),繼續(xù)執(zhí)行標(biāo)簽下面的代碼。
label標(biāo)簽定義在for循環(huán)上面的情況
![](/d/20211017/cc1fa481e702fb5b5e25dd0cb2eb43db.gif)
label標(biāo)簽定義在for循環(huán)下面的情況
![](/d/20211017/bfa9b06b0e7439c8670d7b67b25a7014.gif)
補(bǔ)充:Go語言-break語句的標(biāo)簽用法
在go語言中,break語句后可以加上標(biāo)簽。如果加了標(biāo)簽,就會(huì)跳出標(biāo)簽對(duì)應(yīng)的for循環(huán)。
package main
import (
"fmt"
)
func main() {
label1:
for i := 0; i 4; i++ {
for j := 0; j 10; j++ {
if j == 2{
break label1
}
fmt.Println("j = ", j)
}
}
}
輸出為:
j = 0
j = 1
上面例子中,break后的標(biāo)簽label1指定的就是最外層的for循環(huán),所以當(dāng)j等于2時(shí),直接結(jié)束了所有的循環(huán)。
ps:continue語句也支持標(biāo)簽功能
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- Golang 空map和未初始化map的注意事項(xiàng)說明
- Golang 如何判斷數(shù)組某個(gè)元素是否存在 (isset)
- golang 函數(shù)返回chan類型的操作
- Go語言的Channel遍歷方法詳解
- Golang 拷貝Array或Slice的操作
- 基于Go Int轉(zhuǎn)string幾種方式性能測(cè)試
- Go 實(shí)現(xiàn)英尺和米的簡(jiǎn)單單位換算方式