Go 語言提供了以下幾種條件判斷語句:
package main
import "fmt"
func main() {
// If 在布爾表達式爲 true 時,其後緊跟的語句塊執行,如果爲 false 則不執行
if true {
fmt.Println("犀利的大熊")
}
// If 在布爾表達式爲 true 時,其後緊跟的語句塊執行,如果爲 false 則執行 else 語句塊
if true {
fmt.Println("犀利的大熊")
} else {
fmt.Println("犀利的二熊")
}
// If嵌套 表達式都爲真的時候執行
if true {
if true {
fmt.Println("犀利的大熊")
}
}
// switch 語句用於基於不同條件執行不同動作,
// 每一個 case 分支都是唯一的,從上至下逐一測試,直到匹配爲止
// switch 語句執行的過程從上至下,直到找到匹配項,匹配項後面也不需要再加 break
// switch 默認情況下 case 最後自帶 break 語句,匹配成功後就不會執行其他 case
// 如果我們需要執行後面的 case,可以使用 fallthrough
var1 := 100
switch var1 {
case 90:
fmt.Println(90)
case 80, 79, 78:
fmt.Println(80)
case 70:
fmt.Println(70)
default:
fmt.Println("沒匹配到值")
}
// select 是 Go 中的一個控制結構,類似於用於通信的 switch 語句
// 每個 case 必須是一個通信操作,要麼是發送要麼是接收
// 它的語法如下
// 每個 case 都必須是一個通信 所有 channel 表達式都會被求值
// 所有被髮送的表達式都會被求值 如果任意某個通信可以進行,它就執行,其他被忽略
// 如果有多個 case 都可以運行,Select 會隨機公平地選出一個執行。其他不會執行
var c1, c2, c3 chan int
var i1, i2 int
select {
case i1 = <-c1:
fmt.Println("received ", i1, "from", c1)
case c2 <- i2:
fmt.Println("send ", i2, " to c2")
case i3, ok := <-c3: // same as: i3, ok := <-c3
if ok {
fmt.Println("received ", i3, " from c3")
} else {
fmt.Println("c3 is closed")
}
default:
fmt.Println("no communication")
}
}