以下笔记摘录自『 The Go Workshop 』。
如果遇到需要一大堆if叙述才能处理的状况,就可以引用Go语言里的另一种条件判断叙述:Switch。
switch <起始赋值叙述>; <运算式> {
case <运算式> :
<程序叙述>
case <运算式>, <运算式>:
<程序叙述>
fallthrough
...
default:
<程序叙述>
与if叙述只能使用布林运算式不同,Switch运算式回传值可以是非布林值。
上述的起始赋值叙述/运算式都是非必要,可以只写其中一个(switch <起始赋值叙述>
或 switch <运算式>
),也可以两个都不写。如果没有写运算式,效果就跟写成switch true
一样。
case用来检查要执行的条件,运算式有两种写法,可以写成像if叙述的布林运算式,或者直接写一个值,这个值会跟swith自身运算式的值做比较。
後面的程序叙述跟if程序区很像,但不需要用大括号。
Go语言会一由上至下的顺序检查各个case得值或运算式,只要找的一个检查通过的case,Go语言就会只执行它对应的程序叙述并离开switch,这点与许多其他语言的switch不太一样。
使用fallthrough则可以让Go语言执行到该行後继续往下检查下一个case的条件。
default叙述作用同if叙述中的else,当所有case的运算式都不成立或值不符合时,就会执行它。
package main
import (
"fmt"
"time"
)
func main() {
day := time.Monday
switch day {
case time.Monday:
fmt.Println("星期一,猴子穿新衣")
case time.Tuesday:
fmt.Println("星期二,猴子肚子饿")
case time.Wednesday:
fmt.Println("星期三,猴子去爬山")
case time.Thursday:
fmt.Println("星期四,猴子去考试")
case time.Friday:
fmt.Println("星期五,猴子去跳舞")
case time.Saturday:
fmt.Println("星期六,猴子去斗六")
case time.Sunday:
fmt.Println("星期日,猴子过生日")
default:
fmt.Println("日期不正确")
}
}
//output
星期一,猴子穿新衣
>>: Day 25 Azure machine learning: Pipeline for data- 建立工作流程来收集资料
Reactive Programming 序 两年前在JCConf 2019,欣赏了Josh Lon...
Hashicorp Nomad: Application Logs AP log又多又杂,相信大部分...
待完成... ...
案例说明及适用场景 每一个商机都有公司对他的期望值(金额) 商机不论成功或失败与否,长期的记录,能有...
.RC4 在 WEP 中用於强制保密。然而,“在 2001 年 8 月,Scott Fluhrer、...