有人可以解釋一下,爲什麼如果通道被緩衝,程序不會以fatal_error退出?緩衝/無緩衝通道
無緩衝通道
package main
func main() {
c := make(chan int)
c <- 3
}
fatal error: all goroutines are asleep - deadlock!
緩衝通道
package main
func main() {
c := make(chan int, 1)
c <- 3
}
[no output]
Program exited.
謝謝!
我想這是因爲緩衝和非緩衝通道之間的差異。在緩衝的通道中,發送方等待接收方(本例中爲自己)獲取數據。但我不知道.. –
可能的重複[如何使(chan布爾)行爲不同於make(chan bool,1)?](http://stackoverflow.com/questions/20041392/how-does-makechan -bool-表現-不同地從-makechan-布爾-1) – Matt