Go語言中 select 使用

一、Go語言中select概念

        golang 的 select 就是監聽 IO 操做,當 IO 操做發生時,觸發相應的動做。 golang

        在執行select語句的時候,運行時系統會自上而下地判斷每一個case中的發送或接收操做是否能夠被當即執行(當即執行:意思是當前Goroutine不會所以操做而被阻塞)spa

        select的用法與switch很是相似,由select開始一個新的選擇塊,每一個選擇條件由case語句來描述。與switch語句能夠選擇任何可以使用相等比較的條件相比,select有比較多的限制,其中最大的一條限制就是每一個case語句裏必須是一個IO操做,確切的說,應該是一個面向channel的IO操做。code

        select 主要用於在Go語言中實現 channel 非阻塞式獲取或寫入數據,在默認狀況下 channel  收發數據都是阻塞式的。it

 

二、select 代碼示例

package main

import "fmt"

func main() {
	ch1 := make(chan int, 2)
	ch2 := make(chan int, 2)
	ch1 <- 1
	ch2 <- 2
	select {
	case e1 := <-ch1:
		//若是ch1通道成功讀取數據,則執行該case處理語句
		fmt.Printf("1th case is selected. e1=%v", e1)
	case e2 := <-ch2:
		//若是ch2通道成功讀取數據,則執行該case處理語句
		fmt.Printf("2th case is selected. e2=%v", e2)
	default:
		//若是上面case都沒有成功,則進入default處理流程
		fmt.Println("default!.")
	}
}
相關文章
相關標籤/搜索