switch語句
使用switch語句來選擇要執(zhí)行的多個代碼塊中的一個。
在Go中的switch語句類似于C僻他、C++宵距、Java、JavaScript和PHP中的switch語句吨拗。不同之處在于它只執(zhí)行匹配的case满哪,因此不需要使用break語句。
單一case的switch語法
switch 表達(dá)式 {
case x:
// 代碼塊
case y:
// 代碼塊
case z:
// ...
default:
// 代碼塊
}
它的工作方式如下:
- 表達(dá)式被評估一次劝篷。
- switch表達(dá)式的值與每個case的值進(jìn)行比較哨鸭。
- 如果匹配,則執(zhí)行相關(guān)的代碼塊娇妓。
- 默認(rèn)關(guān)鍵字是可選的像鸡。它指定了如果沒有匹配的case時要運(yùn)行的一些代碼笋籽。
單一case的switch示例
下面的示例使用星期幾的數(shù)字來計算星期幾的名稱:
package main
import (
"fmt"
)
func main() {
day := 4
switch day {
case 1:
fmt.Println("星期一")
case 2:
fmt.Println("星期二")
case 3:
fmt.Println("星期三")
case 4:
fmt.Println("星期四")
case 5:
fmt.Println("星期五")
case 6:
fmt.Println("星期六")
case 7:
fmt.Println("星期日")
}
}
結(jié)果:
星期四
default關(guān)鍵字
default關(guān)鍵字指定了在沒有匹配的case時要運(yùn)行的一些代碼:
package main
import (
"fmt"
)
func main() {
day := 8
switch day {
case 1:
fmt.Println("星期一")
case 2:
fmt.Println("星期二")
case 3:
fmt.Println("星期三")
case 4:
fmt.Println("星期四")
case 5:
fmt.Println("星期五")
case 6:
fmt.Println("星期六")
case 7:
fmt.Println("星期日")
default:
fmt.Println("不是工作日")
}
}
結(jié)果:
不是工作日
所有case值應(yīng)與switch表達(dá)式具有相同的類型由蘑。否則,編譯器將引發(fā)錯誤掺喻。
package main
import (
"fmt"
)
func main() {
a := 3
switch a {
case 1:
fmt.Println("a是一")
case "b":
fmt.Println("a是b")
}
}
結(jié)果:
./prog.go:11:2: 無法將類型為untyped string的"b"用作int類型
多個值的switch語句
在switch語句中着绷,每個case可以有多個值:
語法
switch 表達(dá)式 {
case x, y:
// 代碼塊(如果表達(dá)式的值是x或y)
case v, w:
// 代碼塊(如果表達(dá)式的值是v或w)
case z:
// ...
default:
// 代碼塊(如果表達(dá)式在任何case中都沒有找到)
}
多個值的switch示例
下面的示例使用星期幾的數(shù)字返回不同的文本:
package main
import (
"fmt"
)
func main() {
day := 5
switch day {
case 1, 3, 5:
fmt.Println("奇數(shù)工作日")
case 2, 4:
fmt.Println("偶數(shù)工作日")
case 6, 7:
fmt.Println("周末")
default:
fmt.Println("無效的日期編號")
}
}
結(jié)果:
奇數(shù)工作日
最后
為了方便其他設(shè)備和平臺的小伙伴觀看往期文章蛔钙,鏈接奉上:
公眾號搜索Let us Coding
,知乎荠医,開源中國吁脱,CSDN桑涎,思否,掘金兼贡,InfoQ攻冷,簡書,博客園遍希,慕課等曼,51CTO,helloworld孵班,騰訊開發(fā)者社區(qū)涉兽,阿里開發(fā)者社區(qū)
看完如果覺得有幫助,歡迎點(diǎn)贊篙程、收藏和關(guān)注