答案 0 :(得分:10)
将通道变量设置为nil只需将变量设置为nil,同时保留之前引用的通道初始化。
与将任何其他变量设置为nil相同。
如果对频道有其他引用,您仍然可以访问它。如果没有,它将被垃圾收集。
此外,nil
与封闭频道相比,在写作或阅读时表现不同。来自Dave Cheney的博客文章Channel Axioms,我建议全文阅读:
- 永远发送到nil频道阻止
- 来自nil频道的接收永久阻止
- 发送到封闭频道恐慌
- 来自已关闭频道的接收会立即返回零值
答案 1 :(得分:2)
这是一种语言规范。 您可以永久地从封闭频道接收,但在封闭频道上写入会导致运行时恐慌。 nil通道上的两个操作都会永久阻塞。 这种行为通常用于同步方案。