校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > golang 跳出for循環操作

golang 跳出for循環操作

熱門標簽:400開頭電話怎樣申請 官渡電銷外呼管理系統怎么收費 杭州人工智能電銷機器人費用 貴州電話智能外呼系統 赤峰電銷 利用地圖標注位置 地圖區域圖標注后導出 谷歌美發店地圖標注 江蘇呼叫中心外呼系統有效果嗎

執行以下代碼,發現無法跳出for循環:

func SelectTest() {
 i := 0
 for {
 select {
 case -time.After(time.Second * time.Duration(2)):
 i++
 if i == 5 {
 fmt.Println("跳出for循環")
 }
 }
 fmt.Println("for循環內 i=", i)
 }
 fmt.Println("for循環外")
}

解決辦法有兩個:

1.使用break:

func SelectTest() {
 i := 0
Loop:
 for {
 select {
 case -time.After(time.Second * time.Duration(2)):
 i++
 if i == 5 {
 fmt.Println("跳出for循環")
 break Loop
 }
 }
 fmt.Println("for循環內 i=", i)
 }
 fmt.Println("for循環外")
}

2.使用goto:

func SelectTest() {
 i := 0
 for {
 select {
 case -time.After(time.Second * time.Duration(2)):
 i++
 if i == 5 {
 fmt.Println("跳出for循環")
 goto Loop
 }
 }
 fmt.Println("for循環內 i=", i)
 }
Loop:
 fmt.Println("for循環外")
}

分析:

使用break lable 和 goto lable 都能跳出for循環;不同之處在于:break標簽只能用于for循環,且標簽位于for循環前面,goto是指跳轉到指定標簽處

補充:golang跳出for select 循環

通常在for循環中,使用break可以跳出循環,但是注意在go語言中,for select配合時,break并不能跳出循環。

func testSelectFor(chExit chan bool){
 for {
 select {
 case v, ok := -chExit:
 if !ok {
 fmt.Println("close channel 1", v)
 break
 }
 fmt.Println("ch1 val =", v)
 }
 }
 fmt.Println("exit testSelectFor")
}

如下調用:

//嘗試2 select for 跳出循環
c := make(chan bool)
go testSelectFor(c)
 
c - true
c - false
close(c)
 
time.Sleep(time.Duration(2) * time.Second)

運行結果如下,可以看到break無法跳出循環:

...
close channel 1 false
close channel 1 false
close channel 1 false
close channel 1 false
...

了解決這個問題,需要設置標簽,break 標簽或goto 便簽即可跳出循環,如下兩種方法均可。

func testSelectFor2(chExit chan bool){
 EXIT:
 for {
 select {
 case v, ok := -chExit:
 if !ok {
 fmt.Println("close channel 2", v)
 break EXIT//goto EXIT2
 }
 
 fmt.Println("ch2 val =", v)
 }
 }
 //EXIT2:
 fmt.Println("exit testSelectFor2")
}

同樣調用,輸出結果如下:

ch2 val = true
ch2 val = false
close channel 2 false
exit testSelectFor2

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • golang中for循環遍歷channel時需要注意的問題詳解
  • Golang常見錯誤之值拷貝和for循環中的單一變量詳解
  • Golang實現for循環運行超時后自動退出的方法
  • golang語言中for循環語句用法實例

標簽:泰安 河池 鷹潭 宜春 保定 黔西 武漢 松原

巨人網絡通訊聲明:本文標題《golang 跳出for循環操作》,本文關鍵詞  golang,跳出,for,循環,操作,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang 跳出for循環操作》相關的同類信息!
  • 本頁收集關于golang 跳出for循環操作的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 辉县市| 阿图什市| 永修县| 普兰县| 崇义县| 多伦县| 黄陵县| 商南县| 丹巴县| 礼泉县| 应城市| 疏勒县| 嘉禾县| 内丘县| 阿尔山市| 平塘县| 惠来县| 子洲县| 铁岭市| 定边县| 穆棱市| 邻水| 青铜峡市| 汝南县| 思南县| 盐边县| 台山市| 霍山县| 松江区| 行唐县| 磴口县| 江津市| 凤阳县| 墨脱县| 潼关县| 徐汇区| 高邑县| 宜川县| 昭觉县| 庐江县| 兴安盟|