如何优雅地关闭Go channel

  1. 云栖社区>
  2. Golang语言社区>
  3. 博客>
  4. 正文

如何优雅地关闭Go channel

技术小能手 2018-09-12 14:55:10 浏览3207
展开阅读全文

几天前,我写了一篇文章来说明golang中channel的使用规范。在reddit和HN,那篇文章收到了很多赞同,但是我也收到了下面几个关于Go channel设计和规范的批评:

● 在不能更改channel状态的情况下,没有简单普遍的方式来检查channel是否已经关闭了
● 关闭已经关闭的channel会导致panic,所以在closer(关闭者)不知道channel是否已经关闭的情况下去关闭channel是很危险的
● 发送值到已经关闭的channel会导致panic,所以如果sender(发送者)在不知道channel是否已经关闭的情况下去向channel发送值是很危险的

那些批评看起来都很有道理(实际上并没有)。是的,没有一个内置函数可以检查一个channel是否已经关闭。如果你能确定不会向channel发送任何值,那么也确实需







网友评论

登录后评论
0/500
评论
技术小能手
+ 关注
所属云栖号: Golang语言社区