ch := make(chan int, 1)
for i := 0; i < 10; i++ {
select {
case x := <-ch:
fmt.Println(x) // "0" "2" "4" "6" "8"
case ch <- i:
}
}
buffer为1,这里的case是怎么选择的,i=0是第一个还是第二个case?
有疑问加站长微信联系(非本文作者)

ch := make(chan int, 1)
for i := 0; i < 10; i++ {
select {
case x := <-ch:
fmt.Println(x) // "0" "2" "4" "6" "8"
case ch <- i:
}
}
buffer为1,这里的case是怎么选择的,i=0是第一个还是第二个case?
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
i = 0的时候执行第二个。select里面哪个可以执行就执行哪个。当有多个case可以执行的时候就随机选择一个执行。
哦,懂了,当i = 1是,因为buffer里有个0了,所以执行了第一个case,如果把buffer改为2,或者更大就是随机选个case执行了。
谢谢