為何非緩沖通道是先打印receive,后打印sent,而緩沖通道相反?。?/h1>
為何非緩沖通道是先打印receive,后打印sent,而緩沖通道相反啊?
為何非緩沖通道是先打印receive,后打印sent,而緩沖通道相反啊?
為何非緩沖通道是先打印receive,后打印sent,而緩沖通道相反啊?
2018-10-21
舉報
2019-01-20
首先,緩沖通道是不行的,send肯定先于receive。
非緩沖通道,多刷幾次即可,偶爾就會出現一次正確結果的哦~(親測,不是每次都相同次序的)
2019-01-11
如果填的是0,代表`myChannel`是一個非緩存通道。發送方在向通道值發送數據的時候會立即被阻塞,直到有某一個接收方已從該通道值中接收了這條數據。
所以在第一個匿名函數執行到`sender <- number`語句之后,便被阻塞了,這時第二個匿名函數開始被執行。等到語句`fmt.Println("Received!", <-receiver)`被執行之后,通道內的值被清空了,`sender <- number`之后的語句繼續被執行。所以就會看到
這根python中的協程coroutine是類似的
2018-10-21
發送方在向通道值發送數據的時候會立即被阻塞,直到有某一個接收方已從該通道值中接收了這條數據