我嘗試運行 main 函數(shù),但它無法結(jié)束。我不知道為什么。func main() { tick := time.Tick(1 * time.Second) done := make(chan bool) go func() { for { select { case <-tick: println("-------hah---------") case <-time.After(2 * time.Second): println("after 1 second.") done <- true } } }() <-done}我期望函數(shù)能夠成功退出,但是函數(shù)無法結(jié)束
1 回答

ABOUTYOU
TA貢獻1812條經(jīng)驗 獲得超5個贊
您的 select 語句有兩個選項:
case <-tick:
每 1 秒觸發(fā)一次,并且
case <-time.After(2 * time.Second):
開始 select 循環(huán)后 2 秒觸發(fā)。
由于第一種情況總是在 1 秒后發(fā)生,因此第二種情況永遠不會發(fā)生。只有第二種情況才會觸發(fā)退出main函數(shù)。
您可能想要的是這樣的:
tick := time.Tick(1 * time.Second) timer := time.After(2 * time.Second)
和
case <-timer:
- 1 回答
- 0 關(guān)注
- 207 瀏覽
添加回答
舉報
0/150
提交
取消