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