switch語句
使用switch語句來選擇要執行的多個代碼塊中的一個。
在Go中的switch語句類似于C、C++、Java、JavaScript和PHP中的switch語句。不同之處在于它只執行匹配的case,因此不需要使用break語句。
單一case的switch語法
switch 表達式 {
case x:// 代碼塊
case y:// 代碼塊
case z:// ...
default:// 代碼塊
}
它的工作方式如下:
- 表達式被評估一次。
- switch表達式的值與每個case的值進行比較。
- 如果匹配,則執行相關的代碼塊。
- 默認關鍵字是可選的。它指定了如果沒有匹配的case時要運行的一些代碼。
單一case的switch示例
下面的示例使用星期幾的數字來計算星期幾的名稱:
package mainimport ("fmt"
)func main() {day := 4switch 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關鍵字
default關鍵字指定了在沒有匹配的case時要運行的一些代碼:
package mainimport ("fmt"
)func main() {day := 8switch 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("不是工作日")}
}
結果:
不是工作日
所有case值應與switch表達式具有相同的類型。否則,編譯器將引發錯誤。
package mainimport ("fmt"
)func main() {a := 3switch a {case 1:fmt.Println("a是一")case "b":fmt.Println("a是b")}
}
結果:
./prog.go:11:2: 無法將類型為untyped string的"b"用作int類型
多個值的switch語句
在switch語句中,每個case可以有多個值:
語法
switch 表達式 {
case x, y:// 代碼塊(如果表達式的值是x或y)
case v, w:// 代碼塊(如果表達式的值是v或w)
case z:// ...
default:// 代碼塊(如果表達式在任何case中都沒有找到)
}
多個值的switch示例
下面的示例使用星期幾的數字返回不同的文本:
package mainimport ("fmt"
)func main() {day := 5switch day {case 1, 3, 5:fmt.Println("奇數工作日")case 2, 4:fmt.Println("偶數工作日")case 6, 7:fmt.Println("周末")default:fmt.Println("無效的日期編號")}
}
結果:
奇數工作日
最后
為了方便其他設備和平臺的小伙伴觀看往期文章:公眾號搜索Let us Coding
,或者掃描下方二維碼,關注公眾號,即可獲取最新文章。
看完如果覺得有幫助,歡迎點贊、收藏和關注