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")
}
}