課程
/后端開發(fā)
/Go
/Go語言第一課
為何非緩沖通道是先打印receive,后打印sent,而緩沖通道相反?。?/p>
2018-10-21
源自:Go語言第一課 5-6
正在回答
首先,緩沖通道是不行的,send肯定先于receive。
非緩沖通道,多刷幾次即可,偶爾就會出現(xiàn)一次正確結(jié)果的哦~(親測,不是每次都相同次序的)
如果填的是0,代表`myChannel`是一個非緩存通道。發(fā)送方在向通道值發(fā)送數(shù)據(jù)的時候會立即被阻塞,直到有某一個接收方已從該通道值中接收了這條數(shù)據(jù)。
所以在第一個匿名函數(shù)執(zhí)行到`sender <- number`語句之后,便被阻塞了,這時第二個匿名函數(shù)開始被執(zhí)行。等到語句`fmt.Println("Received!", <-receiver)`被執(zhí)行之后,通道內(nèi)的值被清空了,`sender <- number`之后的語句繼續(xù)被執(zhí)行。所以就會看到
Received!?6 Sent!
這根python中的協(xié)程coroutine是類似的
發(fā)送方在向通道值發(fā)送數(shù)據(jù)的時候會立即被阻塞,直到有某一個接收方已從該通道值中接收了這條數(shù)據(jù)
舉報
Go語言入門教程,編程之必備知識擴(kuò)散,打好Go語言編程基礎(chǔ)
1 回答有一個緩存位置的通道,在被接收數(shù)據(jù)之前也是阻塞的嗎?
2 回答答案正確,但是打印不出來
1 回答appendSn函數(shù)返回值打印結(jié)果
1 回答初始化的時候是否可以定義為單向通道
2 回答go小白 問問大神 幾個通道的問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2019-01-20
首先,緩沖通道是不行的,send肯定先于receive。
非緩沖通道,多刷幾次即可,偶爾就會出現(xiàn)一次正確結(jié)果的哦~(親測,不是每次都相同次序的)
2019-01-11
如果填的是0,代表`myChannel`是一個非緩存通道。發(fā)送方在向通道值發(fā)送數(shù)據(jù)的時候會立即被阻塞,直到有某一個接收方已從該通道值中接收了這條數(shù)據(jù)。
所以在第一個匿名函數(shù)執(zhí)行到`sender <- number`語句之后,便被阻塞了,這時第二個匿名函數(shù)開始被執(zhí)行。等到語句`fmt.Println("Received!", <-receiver)`被執(zhí)行之后,通道內(nèi)的值被清空了,`sender <- number`之后的語句繼續(xù)被執(zhí)行。所以就會看到
這根python中的協(xié)程coroutine是類似的
2018-10-21
發(fā)送方在向通道值發(fā)送數(shù)據(jù)的時候會立即被阻塞,直到有某一個接收方已從該通道值中接收了這條數(shù)據(jù)