golang 中 select 多个case同时满足的情况

```go ch1 := make (chan int, 10) t1 := time.NewTimer(time.Second * 1) for { ch1<-1 select { case <-ch1: fmt.Println("ch1 pop one element") case <-t1.C: println("1s timer") t1.Reset(time.Second * 1) } } ``` 按理来说,1秒过后,第二个case也不应该被触发,因为第一个case始终满足(每次for循环开始的时候都会ch1 push一个元素),但是实际上1秒过后第二个case会被走到,这就搞不懂了,求解惑
已邀请:

meilihao

赞同来自: ddxx11223 suhanyujie

这里的select在case都满足的情况下,会随机选择一个. channel select的规则就是这样.

要回复问题请先登录注册