本文實(shí)例講述了golang判斷chan channel是否關(guān)閉的方法。分享給大家供大家參考,具體如下:
群里有朋友問,怎么判斷chan是否關(guān)閉,因?yàn)閏lose的channel不會阻塞,并返回類型的nil值,會導(dǎo)致死循環(huán).在這里寫個(gè)例子記錄一下,并且分享給大家
如果不判斷chan是否關(guān)閉
Notice: 以下代碼會產(chǎn)生死循環(huán)
復(fù)制代碼 代碼如下:
package main
import (
"fmt"
)
func main() {
c := make(chan int, 10)
c <- 1
c <- 2
c <- 3
close(c)
for {
fmt.Println(<-c)
}
}
判斷短chan是否關(guān)閉
復(fù)制代碼 代碼如下:
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)
}
}
希望本文所述對大家Go語言程序設(shè)計(jì)有所幫助。