我尝试运行 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 关注
- 151 浏览
添加回答
举报
0/150
提交
取消