当我运行以下 Go 1.18 代码时,我希望看到两条消息一条接一条地重复打印到标准输出。但是,我只看到重复打印“ping”。为什么?该select语句必须同时执行这两种情况,因为有两个不同的通道操作,并且通道本身也不同。for { select { case <-time.NewTicker(time.Millisecond * 400).C: fmt.Println("ping") case <-time.NewTicker(time.Millisecond * 600).C: fmt.Println("pong") }}
1 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
您正在案例中创建一个新的代码。select 语句首先评估 case,这意味着它创建了两个计时器,在较短的一个计时结束后,它创建了另一对计时器。下一次,将再次挑选较短的。
在 for 循环外创建两个代码。
添加回答
举报
0/150
提交
取消