3 回答

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
您還可以通過使用len來窺視通道緩沖區(qū)以查看其是否包含任何內(nèi)容:
if len(channel) > 0 {
// has data to receive
}
這不會觸摸通道緩沖區(qū),與之不同的是foo, gotValue := <- ch,該緩沖區(qū)會在時(shí)刪除一個(gè)值gotValue == true。

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
Select語句使您可以一次隨機(jī)檢查分支(在等待通信的分支中),以檢查多個(gè)通道:
func main () {
for {
select {
case w := <- workchan:
go do_work(w)
case <- signalchan:
return
// default works here if no communication is available
default:
// do idle work
}
}
}
對于“ select”語句中的所有發(fā)送和接收表達(dá)式,將按從上到下的順序?qū)νǖ辣磉_(dá)式以及出現(xiàn)在發(fā)送表達(dá)式右側(cè)的所有表達(dá)式進(jìn)行評估。如果可以進(jìn)行任何結(jié)果操作,則選擇一個(gè)并評估相應(yīng)的通信和語句。否則,如果存在默認(rèn)情況,則執(zhí)行;否則,將執(zhí)行默認(rèn)情況。如果不是,則語句將阻塞,直到其中一種通信可以完成。
- 3 回答
- 0 關(guān)注
- 283 瀏覽
添加回答
舉報(bào)