最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang 跳出多重循環(huán)的高級break用法說明

 更新時間:2020年12月16日 08:34:47   作者:冷手馬  
這篇文章主要介紹了golang 跳出多重循環(huán)的高級break用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

平時寫代碼過程中難免會遇到循環(huán)嵌套的操作,這時候最頭疼的就是在break的時候需要一層一層的退出或者使用goto語句,golang有一種和goto方式類似但是goto方式更友好并且更易讀的高級break用法,就是在循環(huán)外使用label標記退出哪一層循環(huán)的方式。

示例代碼:

I:
 for i := 0; i < 2; i++ {
 for j := 0; j < 5; j++ {
 if j == 2 {
 break I
 }
 fmt.Println("hello")
 }
 fmt.Println("hi")
 }

程序的運行結果:

hello

hello

補充:golang for的select體中如何break外層循環(huán)

問題

默認在select中break是只跳脫了select體,而不是結束for循環(huán)

for {
 select{
 case <-tick.C:
  //do someting
 case <- stop:
  break //break的不是for循環(huán), 而是跳脫select,執(zhí)行doNext()
 }
 doNext()
}

如何在for的select體中break到外層循環(huán)呢?

1.解決辦法

1.1 使用帶標簽的break

LOOP: for {
 select{
 case <-tick.C:
  //do someting
 case <- stop:
  break LOOP//break的for循環(huán),跳轉執(zhí)行doOther()
 }
 doNext()
}
doOther()

等價于C的goto,但是又不同。比如這里for循環(huán)前的標簽,對于如果使用goto LOOP會導致再次執(zhí)行循環(huán)。但是golang的break到這里是跳出循環(huán),執(zhí)行循環(huán)之后的操作

1.2 使用return

for {
 select{
 case <-tick.C:
  //do someting
 case <- stop:
  return //干凈利落,適合退出goroutin的場景
 }
 doNext()
}
doOther()

1.3 使用標志

isStop := false
for {
 select{
 case <-tick.C:
  //do someting
 case <- stop:
  isStop = true//干凈利落,適合退出goroutin的場景
  break
 }
 if isStop {
 break
 }
 doNext()
}
doOther()

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

相關文章

  • go通過編碼縮短字符串的長度實現(xiàn)方法步驟

    go通過編碼縮短字符串的長度實現(xiàn)方法步驟

    這篇文章主要為大家介紹了go通過編碼縮短字符串的長度實現(xiàn)方法步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Golang實現(xiàn)驗證一個字符串是否為URL

    Golang實現(xiàn)驗證一個字符串是否為URL

    在實際開發(fā)過程中,有時候會遇到?URL?的校驗問題,Go?語言中有哪些方法去驗證一個字符串是否滿足?URL?格式呢?本文就來和大家詳細講講
    2023-04-04
  • 詳解Go語言中空結構體的慣用法

    詳解Go語言中空結構體的慣用法

    空結構體在 Go 編程中有著廣泛的應用,本文將詳細探討空結構體的幾種典型用法,并解釋為何它們在特定場景下非常有用,希望對大家有所幫助
    2024-11-11
  • 淺析Go語言bitset的實現(xiàn)原理

    淺析Go語言bitset的實現(xiàn)原理

    bitset包是一個將非負整數(shù)映射到布爾值的位的集合,這篇文章主要通過開源包bitset來為大家分析一下位集合的設計和實現(xiàn),感興趣的可以學習一下
    2023-08-08
  • Go?為什么不支持可重入鎖原理解析

    Go?為什么不支持可重入鎖原理解析

    這篇文章主要為大家介紹了Go?為什么不支持可重入鎖原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • golang 設置web請求狀態(tài)碼操作

    golang 設置web請求狀態(tài)碼操作

    這篇文章主要介紹了golang 設置web請求狀態(tài)碼操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go語言下載網(wǎng)絡圖片或文件的方法示例

    Go語言下載網(wǎng)絡圖片或文件的方法示例

    這篇文章主要介紹了Go語言下載網(wǎng)絡圖片或文件的方法示例,文中通過示例代碼介紹的非常詳細,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 一文帶你掌握Go語言運算符的使用

    一文帶你掌握Go語言運算符的使用

    運算符用于在程序運行時執(zhí)行數(shù)學或邏輯運算。Go 語言內置的運算符有:算術運算符、關系運算符、邏輯運算符、位運算符、賦值運算符、其他運算符。本文將帶大家詳細了解一下這些運算符的使用,感興趣的可以了解一下
    2022-04-04
  • Golang 實現(xiàn) Redis系列(六)如何實現(xiàn) pipeline 模式的 redis 客戶端

    Golang 實現(xiàn) Redis系列(六)如何實現(xiàn) pipeline 模式的 redis 客戶端

    pipeline 模式的 redis 客戶端需要有兩個后臺協(xié)程負責 tcp 通信,調用方通過 channel 向后臺協(xié)程發(fā)送指令,并阻塞等待直到收到響應,本文是使用 golang 實現(xiàn) redis 系列的第六篇, 將介紹如何實現(xiàn)一個 Pipeline 模式的 Redis 客戶端。
    2021-07-07
  • Go 字符串格式化的實例代碼詳解

    Go 字符串格式化的實例代碼詳解

    這篇文章主要介紹了Go 字符串格式化的實例代碼詳解,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02

最新評論

游戏| 淄博市| 德兴市| 苏尼特右旗| 嘉兴市| 鄂伦春自治旗| 禄劝| 沂南县| 洛川县| 中阳县| 平远县| 岳阳县| 凤冈县| 华坪县| 杭锦旗| 无锡市| 克东县| 敖汉旗| 鄂托克前旗| 鹤壁市| 大连市| 商南县| 凤翔县| 比如县| 镇远县| 郁南县| 抚顺县| 佛坪县| 闽清县| 秦皇岛市| 金平| 平顶山市| 余江县| 阳城县| 习水县| 九台市| 资阳市| 枣强县| 嘉祥县| 新宾| 浦北县|