3 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
您似乎希望接收 goroutine 在第二個(gè)fmt.Println執(zhí)行之前運(yùn)行完成。不能保證情況如此。如果程序終止,goroutine 不能保證到達(dá)其函數(shù)的末尾。
當(dāng)你看到?jīng)]有顯示“GOT IT”消息的輸出時(shí),通道傳遞了它的消息,但main函數(shù)在 goroutine 之前完成。程序終止,goroutine 永遠(yuǎn)沒(méi)有機(jī)會(huì)調(diào)用fmt.Printf
在您引用的示例中,該main函數(shù)以以下內(nèi)容結(jié)尾:
go func() { messages <- "ping" }()
msg := <-messages
fmt.Println(msg)
由于main函數(shù)在收到消息之前會(huì)阻塞,因此在這個(gè)例子中 goroutine 總是運(yùn)行到完成。在您的代碼中,您的 goroutine 在從通道接收后執(zhí)行一個(gè)步驟,并且未定義 goroutine 或 main 函數(shù)是否會(huì)在接收后執(zhí)行下一行。
- 3 回答
- 0 關(guān)注
- 210 瀏覽
添加回答
舉報(bào)