select多路複用
阿新 • • 發佈:2022-03-22
1、select的使用方法
Select 的使用方式類似於之前學到的 switch 語句,它也有一系列 case 分支和一個預設的分支。每個 case 分支會對應一個通道的通訊(接收或傳送)過程。select 會一直等待,直到其中的某個 case 的通訊操作完成時,就會執行該 case 分支對應的語句。具體格式如下:
select { case <-ch1: //... case data := <-ch2: //... case ch3 <- 10: //... default: //預設操作 }
2、Select的特點
Select 語句具有以下特點。
- 可處理一個或多個 channel 的傳送/接收操作。
- 如果多個 case 同時滿足,select 會隨機選擇一個執行。
- 對於沒有 case 的 select 會一直阻塞,可用於阻塞 main 函式,防止退出。
package main import "fmt" func main() { ch := make(chan int, 1) for i := 1; i <= 10; i++ { select { case x := <-ch: fmt.Println(x) case ch <- i: } } }