golang判斷chan channel是否關閉的方法
更新時間:2016年07月21日 15:29:20 作者:dotcoo
這篇文章主要介紹了golang判斷chan channel是否關閉的方法,結合實例形式對比分析了Go語言判斷chan沒有關閉的后果及關閉的方法,需要的朋友可以參考下
本文實例講述了golang判斷chan channel是否關閉的方法。分享給大家供大家參考,具體如下:
群里有朋友問,怎么判斷chan是否關閉,因為close的channel不會阻塞,并返回類型的nil值,會導致死循環(huán).在這里寫個例子記錄一下,并且分享給大家
如果不判斷chan是否關閉
Notice: 以下代碼會產生死循環(huán)
復制代碼 代碼如下:
package main
import (
"fmt"
)
func main() {
c := make(chan int, 10)
c <- 1
c <- 2
c <- 3
close(c)
for {
fmt.Println(<-c)
}
}
import (
"fmt"
)
func main() {
c := make(chan int, 10)
c <- 1
c <- 2
c <- 3
close(c)
for {
fmt.Println(<-c)
}
}
判斷短chan是否關閉
復制代碼 代碼如下:
package main
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)
}
}
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語言程序設計有所幫助。
相關文章
詳解Go語言Slice作為函數(shù)參數(shù)的使用
Slice切片在Go語言中實質是一種結構體類型,本文詳細的介紹了Go語言Slice作為函數(shù)參數(shù)的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07golang gin 監(jiān)聽rabbitmq隊列無限消費的案例代碼
這篇文章主要介紹了golang gin 監(jiān)聽rabbitmq隊列無限消費,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12