为啥绿色区域还是可以获取到数据,红色区域就不可以了?
b通道接收之前,获取的数据是a<-i传入的,在b通过接受后,由于go func里面的for已经执行过了,也就是将a通道内容循环全部输出了,所以在b通过之后无法获取a通道的内容(因为已经全部在go func里面获取了)
最后 执行 kkkkk := <-a
其实完整写法 应该是 kkkkk,ok := <-a
你最后执行的 结果应该是 kkkkk = 0 ok = false 吧 虽然打出kkkkk 是0 但是 ok 是false 说明 管道已经关闭 kkkkk 数据不可信是默认的初始值
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答894 阅读✓ 已解决
2 回答2.2k 阅读
1 回答2.1k 阅读
channel关闭后可以读取关闭前写入的数据,关闭后不能写,写了就panic
这里写了两个数据到
a channel
中,所以下面可以读两次,第3次不能读取了,因为没数据了输出
输出了4个值,证明
kkkkk := <-a
读到了值,看不懂你的评论