咨询一个问题,go语言实战上面的例子,先关闭channel,然后range,这可行么?谢谢
// Close the channel before we drain the channel of its
// resources. If we don't do this, we will have a deadlock.
close(p.resources)
// Close the resources
for r := range p.resources {
r.Close()
}
更多评论
谢谢解答,但是我还是有点问题。
我看文档里面写的是,读取关闭的channel时候,读取的返回值是相应对象的零值,对象的空值也可以调用他实现的接口么?这个所谓的零值,应该是一未初始化的对象吧?否者是零值的话,应该没办法调用方法了吧?
刚从C++转过来,有点蒙。
谢谢,非常感谢。
#2
如果关闭了,range 依然能够读取到 chan 里面的值,如果 chan 里面没有值了,range 循环就结束了,不存在会 `r` 是零值的情况。
#3