欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang 跳出for循環(huán)操作

 更新時(shí)間:2020年12月15日 10:18:33   作者:陳永坤  
這篇文章主要介紹了golang 跳出for循環(huán)操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

執(zhí)行以下代碼,發(fā)現(xiàn)無法跳出for循環(huán):

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

解決辦法有兩個(gè):

1.使用break:

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

2.使用goto:

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

分析:

使用break lable 和 goto lable 都能跳出for循環(huán);不同之處在于:break標(biāo)簽只能用于for循環(huán),且標(biāo)簽位于for循環(huán)前面,goto是指跳轉(zhuǎn)到指定標(biāo)簽處

補(bǔ)充:golang跳出for select 循環(huán)

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

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")
}

如下調(diào)用:

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

運(yùn)行結(jié)果如下,可以看到break無法跳出循環(huán):

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

了解決這個(gè)問題,需要設(shè)置標(biāo)簽,break 標(biāo)簽或goto 便簽即可跳出循環(huán),如下兩種方法均可。

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")
}

同樣調(diào)用,輸出結(jié)果如下:

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 十個(gè)Go map面試??紗栴}合集

    十個(gè)Go map面試常考問題合集

    go面試中,map相關(guān)知識點(diǎn)問的比較多,這篇文章主要為大家整理歸納了10個(gè)??嫉膯栴},文中的示例代碼講解詳細(xì),希望對大家有一定的幫助
    2023-07-07
  • goland 設(shè)置注釋模板的過程圖文詳解

    goland 設(shè)置注釋模板的過程圖文詳解

    這篇文章主要介紹了goland 設(shè)置注釋模板的過程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-12-12
  • Go獲取與設(shè)置環(huán)境變量的方法詳解

    Go獲取與設(shè)置環(huán)境變量的方法詳解

    go環(huán)境變量的配置其實(shí)說真的說難也難,說不難也不難,只要配置成功過一次以后后面都很簡單,但是最好是要做好筆記,這篇文章主要給大家介紹了關(guān)于Go獲取與設(shè)置環(huán)境變量的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • go的websocket實(shí)現(xiàn)原理與用法詳解

    go的websocket實(shí)現(xiàn)原理與用法詳解

    這篇文章主要介紹了go的websocket實(shí)現(xiàn)原理與用法,詳細(xì)分析了websocket的功能、原理及Go語言實(shí)現(xiàn)websocket的相關(guān)技巧,需要的朋友可以參考下
    2016-07-07
  • 一文帶你了解Golang中的緩沖區(qū)Buffer

    一文帶你了解Golang中的緩沖區(qū)Buffer

    作為一種常見的數(shù)據(jù)結(jié)構(gòu),緩沖區(qū)(Buffer)在計(jì)算機(jī)科學(xué)中有著廣泛的應(yīng)用。這篇文章將詳細(xì)介紹?Go?中?Buffer?的用法,從多個(gè)方面介紹其特性和應(yīng)用場景,需要的可以參考一下
    2023-05-05
  • Go語言實(shí)現(xiàn)簡單Web服務(wù)器的方法

    Go語言實(shí)現(xiàn)簡單Web服務(wù)器的方法

    這篇文章主要介紹了Go語言實(shí)現(xiàn)簡單Web服務(wù)器的方法,實(shí)例分析了Web服務(wù)器的實(shí)現(xiàn)原理與相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • golang字符串轉(zhuǎn)64位整數(shù)的示例代碼

    golang字符串轉(zhuǎn)64位整數(shù)的示例代碼

    這篇文章主要介紹了golang字符串轉(zhuǎn)64位整數(shù),在Go語言中,可以使用strconv包中的ParseInt函數(shù)將字符串轉(zhuǎn)換為64位整數(shù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • go下載指定版本的依賴包圖文詳解

    go下載指定版本的依賴包圖文詳解

    由于依賴包的每個(gè)版本都有一個(gè)唯一的目錄,所以在多項(xiàng)目場景中需要使用同一個(gè)依賴包的多版本時(shí)才不會產(chǎn)生沖突,下面這篇文章主要給大家介紹了關(guān)于go下載指定版本的依賴包的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Golang泛型的使用方法詳解

    Golang泛型的使用方法詳解

    這篇文章主要介紹了Golang中泛型的使用,Go和Python語言不同,處理不同數(shù)據(jù)類型非常嚴(yán)格。如Python可以定義函數(shù)帶兩個(gè)數(shù)值類型并返回較大的數(shù)值,但可以不嚴(yán)格指定參數(shù)類型為float或integer
    2022-12-12
  • golang中slice擴(kuò)容的具體實(shí)現(xiàn)

    golang中slice擴(kuò)容的具體實(shí)現(xiàn)

    Go 語言中的切片擴(kuò)容機(jī)制是 Go 運(yùn)行時(shí)的一個(gè)關(guān)鍵部分,它確保切片在動(dòng)態(tài)增加元素時(shí)能夠高效地管理內(nèi)存,本文主要介紹了golang中slice擴(kuò)容的具體實(shí)現(xiàn),感興趣的可以了解一下
    2025-05-05

最新評論