示例
package main import "fmt" func main() { ch := make(chan int, 1) for i := 0; i < 10; i++ { select { case x := <-ch: fmt.Println(x) case ch <- i: } } }
分析:
第一次:i=0; ch 是空的, x:=<-ch 无法执行,执行ch<-0;
第二次: i=1; ch 长度为1, ch<-1 无法执行;执行 x:=ch, 打印0;ch变为空了
第三次:i=2; ch 是空的, x:=<-ch 无法执行,执行ch<-2;
执行:
0
2
4
6
8