Go語言中 select 使用 原

1、Go語言中select概念

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

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

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

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

 

2、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!.")
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章