1. 程式人生 > >027_go語言中的通道選擇器

027_go語言中的通道選擇器

檢測 語言 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語言中的通道選擇器