[go] 检查 channel 是否已经被关闭
Posted adream307
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[go] 检查 channel 是否已经被关闭相关的知识,希望对你有一定的参考价值。
val, ok := <-ch
如果 channel
已经被关闭,上述调用立刻返回,并且 ok
为 false
,完整测试代码如下
package main
import (
"log"
"sync"
)
func main()
ch := make(chan int)
var wg sync.WaitGroup
go func()
for i := 0; i <= 100; i++
ch <- i
close(ch)
()
wg.Add(1)
go func()
defer wg.Done()
total := 0
for
if val, ok := <-ch; ok
total += val
else
break
log.Printf("recv total = %d", total)
()
wg.Wait()
程序输出
2020/09/11 11:52:55 recv total = 5050
以上是关于[go] 检查 channel 是否已经被关闭的主要内容,如果未能解决你的问题,请参考以下文章