思考来源于一次忘记初始化channel,造成程序卡死。
查找资料发现操作nil channels会永远阻塞,这个特性看起来似乎没什么用,甚至可能造成BUG,但Golang为何要保留这个特性?
Google之:关键字 golang nil channel
相关讨论还挺多
甚至还有新鲜的关于Go 2的提议:proposal: language: Go 2: panic on send/receive on nil channel
以及Nil Chan的用法:
目前来说,nil chan只会用在select块中,用来关闭分支。
有疑问加站长微信联系(非本文作者)