初識
select
是golang中一種控制結構- 可透過
select
語句監聽在channel
上的數據流動狀態
- 可透過
- 類似於
switch
語句,但是select
會隨機執行任何一個可運行的case
- 沒有
case
可運行時,則阻塞;直到有case
可運行
語法結構
類似switch
,仍存在case
語句和default
語句1
2
3
4
5
6
7
8
9
10select {
case communication clause:
statement(s)
case communication clase:
statement(s)
//可定義任意數量的case
default: //可選擇使用
statments(s)
}
- 每一個
case
都是一個通信- 必須為對channel操作(對channel發送數據 or 從channel中獲取數據 皆可)
- (重要)如果有多個
case
都可運行,select
會隨機地選出一個執行,其他case
便不會執行 - 否則:
- 如果有
default
語句,則執行該語句 - 無
default
語句時,select
將阻塞,直到某個通信可以運行
- 如果有
Example I:
1 | package main |
Result
1 | 1 |
Example II:
1 | package main |
Result
1 | 1 |