當我運行以下 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
提交
取消