未初始化的通道表现如何?

未初始化的通道表现如何?,第1张

未初始化的通道表现如何?

通道类型的“未初始化”字段或变量的所有通道类型的零值为

nil
。因此,让我们研究一下
nil
通道或通道上的 *** 作。

值得 在一篇文章中收集 渠道公理

  • nil
    通道上的发送将永远阻塞(规范:Send语句)
  • 来自
    nil
    通道的接收将永远阻塞(规范:接收运算符)
  • 发送到封闭通道恐慌(规范:Send语句)
  • 来自封闭通道的接收立即返回零值(规范:接收运算符)

nil
通道阻塞的原因:如果一个通道值为
nil
,则没有人引用它,因此没有人会准备好从中接收(我们要发送的内容);或发送任何内容(我们会从中收到什么)。

您可以在Dave Cheney:Channel Axioms中阅读更多的推理和更多详细信息。

为了完整性:

  • 关闭一个
    nil
    频道将会引起一个运行时恐慌(就像闭一个已经封闭的通道)。
  • 长度和容量一个的
    nil
    信道是
    0
    ; 根据
    nil
    具有
    0
    长度和容量的切片和地图。

理由:“关闭”是一种状态,但是一个

nil
通道不能具有状态(只有一个
nil
通道,“关闭”通道没有一个通道,“非关闭”通道没有一个通道)。而且没有元素在
nil
通道中排队(因此len
= 0),并且它没有缓冲区容量(因此cap = 0)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4896926.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存