中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

Go 語言 select 語句

Go 語言條件語句 Go 語言條件語句

select 是 Go 中的一個控制結(jié)構(gòu),類似于用于通信的 switch 語句。每個 case 必須是一個通信操作,要么是發(fā)送要么是接收。

select 隨機執(zhí)行一個可運行的 case。如果沒有 case 可運行,它將阻塞,直到有 case 可運行。一個默認的子句應該總是可運行的。

語法

Go 編程語言中 select 語句的語法如下:

select {
? ? case communication clause ?:
? ? ? ?statement(s); ? ? ?
? ? case communication clause ?:
? ? ? ?statement(s);
? ? /* 你可以定義任意數(shù)量的 case */
? ? default : /* 可選 */
? ? ? ?statement(s);
}

以下描述了 select 語句的語法:

  • 每個 case 都必須是一個通信
  • 所有 channel 表達式都會被求值
  • 所有被發(fā)送的表達式都會被求值
  • 如果任意某個通信可以進行,它就執(zhí)行,其他被忽略。
  • 如果有多個 case 都可以運行,Select 會隨機公平地選出一個執(zhí)行。其他不會執(zhí)行。
    否則:
    1. 如果有 default 子句,則執(zhí)行該語句。
    2. 如果沒有 default 子句,select 將阻塞,直到某個通信可以運行;Go 不會重新對 channel 或值進行求值。

實例

select 語句應用演示:

實例

package main

import "fmt"

func main() {
? ?var c1, c2, c3 chan int
? ?var i1, i2 int
? ?select {
? ? ? case i1 = <-c1:
? ? ? ? ?fmt.Printf("received ", i1, " from c1n")
? ? ? case c2 <- i2:
? ? ? ? ?fmt.Printf("sent ", i2, " to c2n")
? ? ? case i3, ok := (<-c3): ?// same as: i3, ok := <-c3
? ? ? ? ?if ok {
? ? ? ? ? ? fmt.Printf("received ", i3, " from c3n")
? ? ? ? ?} else {
? ? ? ? ? ? fmt.Printf("c3 is closedn")
? ? ? ? ?}
? ? ? default:
? ? ? ? ?fmt.Printf("no communicationn")
? ?} ? ?
}

以上代碼執(zhí)行結(jié)果為:

no communication

Go 語言條件語句 Go 語言條件語句

其他擴展