channel使用惯例
通道具有以下性质:
向
nil通道发送数据会永久阻塞从
nil通道接收数据会永久阻塞向已关闭的通道发送会引发恐慌
从已关闭的通道接收会立刻返回零值
向nil通道发送数据会永久阻塞
package main
func main() {
var ch chan bool
ch <- true // deadlocks because ch is nil
}
---------Output-----------
fatal error: all goroutines are asleep - deadlock!通道没有初始化值则为nil,所以上述程序会永久阻塞(发生死锁)。
上述代码并无利用价值,它属于缺陷(Bug)。请不要这样做!
从nil通道接收数据会永久阻塞
类似的,这也会引发死锁,是Bug,请不要这样做!
向已关闭通道发送会引发恐慌
最后更新于
这有帮助吗?