2 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
所述default的情況下select聲明旨在提供非阻塞I / O信道讀取和寫入。default每當(dāng)任何情況下的任何通道都未準(zhǔn)備好讀取/寫入時(shí),就執(zhí)行該情況下的代碼。
因此,在您的情況下,default如果退出通道無話可說,則執(zhí)行該塊。您可以簡(jiǎn)單地刪除默認(rèn)大小寫,它將阻止該quit_status := <-quit大小寫,直到quit..中的值可用為止。在這種情況下,這可能是您想要的。
如果要在select語句之后立即繼續(xù)執(zhí)行代碼,則應(yīng)在單獨(dú)的goroutine中運(yùn)行此select語句:
go func() {
select {
case quit_status := <-quit:
...
}
}()
// Execution continues here immediately.

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
正如@StephenWeinberg指出的那樣,go中沒有pass語句。只需簡(jiǎn)單地放置任何東西,以防頻道碰到某些東西。
select {
case <-ch:
// do something
case <-time.After(2*time.Second):
// timeout
default:
// do nothing aka pass
}
- 2 回答
- 0 關(guān)注
- 740 瀏覽
添加回答
舉報(bào)