🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
> # 使用 select 来多路复用 channel - **随机选择**:当多个 `channel` 同时满足条件时,`select` 会随机选择一个执行。 - **默认分支**:可以在 `select` 中添加 `default` 分支,当所有的 `channel` 都没有数据时,`select` 可以立即执行 `default` 分支而不阻塞。 ~~~ package main import ( "fmt" "time" ) func main() { // 创建两个 channel ch1 := make(chan string) ch2 := make(chan string) // 启动两个 goroutine 分别向 ch1 和 ch2 发送消息 go func() { ch1 <- "message from ch1" }() go func() { ch2 <- "message from ch2" }() time.Sleep(time.Second) // 使用 select 来多路复用 channel for i := 0; i < 10; i++ { select { case msg1 := <-ch1: fmt.Println(msg1) case msg2 := <-ch2: fmt.Println(msg2) case <-time.After(2 * time.Second): fmt.Println("time out") } } } ~~~