027_go語言中的通道選擇器
阿新 • • 發佈:2018-04-12
檢測 語言 highlight UNC 演示 AI pack sele 解讀
代碼演示
package main import "fmt" import "time" func main() { c1 := make(chan string) c2 := make(chan string) go func() { time.Sleep(time.Second * 1) c1 <- "one" }() go func() { time.Sleep(time.Second * 2) c2 <- "two" }() for i := 0; i < 2; i++ { select { case msg1 := <-c1: fmt.Println("received", msg1) case msg2 := <-c2: fmt.Println("received", msg2) } } }
代碼運行結果
received one received two
代碼解讀
- go語言的通道選擇器(select)可以同時等待多個通道操作
- 以上例子就是利用關鍵字select同時等待創建的兩個通道的值
- 對於select語句而言,它會不斷的檢測通道是否有值傳過來,一旦發現傳過來,立刻獲取並輸出
027_go語言中的通道選擇器