我嘗試運行 main 函數,但它無法結束。我不知道為什么。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}我期望函數能夠成功退出,但是函數無法結束
1 回答

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