本文实例讲述了golang判断chan channel是否关闭的方法。分享给大家供大家参考,具体如下:
群里有朋友问,怎么判断chan是否关闭,因为close的channel不会阻塞,并返回类型的nil值,会导致死循环.在这里写个例子记录一下,并且分享给大家
如果不判断chan是否关闭
Notice: 以下代码会产生死循环
复制代码 代码如下:
package main
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)
}
}
希望本文所述对大家Go语言程序设计有所帮助。
您可能感兴趣的文章:- 基于golang channel实现的轻量级异步任务分发器示例代码
- golang中for循环遍历channel时需要注意的问题详解
- golang实现基于channel的通用连接池详解
- Golang优雅关闭channel的方法示例
- golang中单向channel的语法介绍
- Golang中channel使用的一些小技巧
- Golang中channel的原理解读(推荐)