本文實例講述了golang判斷chan channel是否關(guān)閉的方法。分享給大家供大家參考,具體如下:
群里有朋友問,怎么判斷chan是否關(guān)閉,因為close的channel不會阻塞,并返回類型的nil值,會導(dǎo)致死循環(huán).在這里寫個例子記錄一下,并且分享給大家
如果不判斷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è)計有所幫助。
您可能感興趣的文章:- 基于golang channel實現(xiàn)的輕量級異步任務(wù)分發(fā)器示例代碼
- golang中for循環(huán)遍歷channel時需要注意的問題詳解
- golang實現(xiàn)基于channel的通用連接池詳解
- Golang優(yōu)雅關(guān)閉channel的方法示例
- golang中單向channel的語法介紹
- Golang中channel使用的一些小技巧
- Golang中channel的原理解讀(推薦)