通道类型的“未初始化”字段或变量的所有通道类型的零值为nil
。因此,让我们研究一下nil
通道或通道上的操作。
nil
通道阻塞的原因:如果一个通道值为nil
,则没有人引用它,因此没有人会准备好从中接收(我们要发送的内容);或发送任何内容(我们会从中收到什么)。
您可以在Dave Cheney:Channel Axioms中阅读更多的推理和更多详细信息。
理由:“关闭”是一种状态,但是一个nil
通道不能具有状态(只有一个nil
通道,“关闭”通道没有一个通道,“非关闭”通道没有一个通道)。而且没有元素在nil
通道中排队(因此len = 0),并且它没有缓冲区容量(因此cap = 0)。