golang判斷chan channel是否關(guān)閉的方法
本文實例講述了golang判斷chan channel是否關(guān)閉的方法。分享給大家供大家參考,具體如下:
群里有朋友問,怎么判斷chan是否關(guān)閉,因為close的channel不會阻塞,并返回類型的nil值,會導(dǎo)致死循環(huán).在這里寫個例子記錄一下,并且分享給大家
如果不判斷chan是否關(guān)閉
Notice: 以下代碼會產(chǎn)生死循環(huán)
import (
"fmt"
)
func main() {
c := make(chan int, 10)
c <- 1
c <- 2
c <- 3
close(c)
for {
fmt.Println(<-c)
}
}
判斷短chan是否關(guān)閉
import (
"fmt"
)
func main() {
c := make(chan int, 10)
c <- 1
c <- 2
c <- 3
close(c)
for {
i, isClose := <-c
if !isClose {
fmt.Println("channel closed!")
break
}
fmt.Println(i)
}
}
希望本文所述對大家Go語言程序設(shè)計有所幫助。
相關(guān)文章
golang調(diào)試bug及性能監(jiān)控方式實踐總結(jié)
這篇文章主要為大家介紹了golang調(diào)試bug及性能監(jiān)控方式實踐是總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05golang包循環(huán)引用的幾種解決方案總結(jié)
golang有包循環(huán)引用問題,用過的應(yīng)該都知道,下面這篇文章主要給大家介紹了關(guān)于golang包循環(huán)引用的幾種解決方案,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09詳解Go語言Slice作為函數(shù)參數(shù)的使用
Slice切片在Go語言中實質(zhì)是一種結(jié)構(gòu)體類型,本文詳細(xì)的介紹了Go語言Slice作為函數(shù)參數(shù)的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07golang并發(fā)執(zhí)行的幾種方式小結(jié)
本文主要介紹了golang并發(fā)執(zhí)行的幾種方式小結(jié),主要包括了Channel,WaitGroup ,Context,使用這三種機(jī)制中的一種或者多種可以達(dá)到并發(fā)控制很好的效果,具有一定的參考價值,感興趣的可以了解一下2023-08-08golang gin 監(jiān)聽rabbitmq隊列無限消費(fèi)的案例代碼
這篇文章主要介紹了golang gin 監(jiān)聽rabbitmq隊列無限消費(fèi),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12