16、Go 流程控制 - select 语句
hi,我是温新
在 Go 语言中,选择语除了有 switch
外,还有 select
。select
用于配合通道(channel)
的读写操作,用于多个 channel 的并发读写操作。
两者之间的不同点在于,switch 语句是按照顺序从上到下依次执行,而 select 则是随机选择一个 case 来判断。
package main
import "fmt"
func main() {
a := make(chan int, 1024)
b := make(chan int, 1024)
for i := 0; i < 10; i++ {
fmt.Printf("第%d次 ", i)
a <- 1
b <- 1
select {
case <-a:
fmt.Println("来自 a")
case <-b:
fmt.Println("来自 b")
}
}
}
其输出结果如下(每交执行都会得到不同的结果):
第1次 来自 b
第2次 来自 a
第3次 来自 a
第4次 来自 b
第5次 来自 b
第6次 来自 a
第7次 来自 b
第8次 来自 a
第9次 来自 a
请登录后再评论