當(dāng)我運(yùn)行以下 Go 1.18 代碼時(shí),我希望看到兩條消息一條接一條地重復(fù)打印到標(biāo)準(zhǔn)輸出。但是,我只看到重復(fù)打印“ping”。為什么?該select語(yǔ)句必須同時(shí)執(zhí)行這兩種情況,因?yàn)橛袃蓚€(gè)不同的通道操作,并且通道本身也不同。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貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
您正在案例中創(chuàng)建一個(gè)新的代碼。select 語(yǔ)句首先評(píng)估 case,這意味著它創(chuàng)建了兩個(gè)計(jì)時(shí)器,在較短的一個(gè)計(jì)時(shí)結(jié)束后,它創(chuàng)建了另一對(duì)計(jì)時(shí)器。下一次,將再次挑選較短的。
在 for 循環(huán)外創(chuàng)建兩個(gè)代碼。
添加回答
舉報(bào)
0/150
提交
取消