分支选择可以理解为一种批量的if语句,使用switch语句可方便地对大量的值进行判断。
在Go语言中的switch,不仅可以基于常量进行判断,还可以基于表达式进行判断。
刚学完go语言的if判断语句,今天学习条件分支选择语句(switch),可以把它理解成加强版IF
1、 基本写法
Go语言改进了switch的语法设计,避免人为造成失误。Go语言的switch中的每一个case与case间是独立的代码块,不需要通过break语句跳出当前case代码块以避免执行到下一行。示例代码如下:
逻辑在代码注释中
package main
import (
"fmt"
)
func main() {
var a = "helloworld"
switch a {
case "hello": //如果hello比中,执行下面这行代码
fmt.Println("hello is ok")
case "world": //如果world比中,执行下面这行代码
fmt.Println("world is ok")
case "helloworld": //如果helloworld比中,执行下面这行代码
fmt.Println("helloworld is ok")
default: //如果都没有比中,执行下面这行代码
fmt.Println("default")
}
}
输出如下:
2、一分支多值
示例代码如下:
逻辑在代码注释中
package main
import (
"fmt"
)
func main() {
var a = "helloworld"
switch a {
case "hello","world": //如果hello或者world比中,执行下面这行代码
fmt.Println("hello or world is ok")
case "helloworld": //如果helloworld比中,执行下面这行代码
fmt.Println("helloworld is ok")
default: //如果都没有比中,执行下面这行代码
fmt.Println("default")
}
}
3、分支表达式
case后不仅仅只是常量,还可以和if一样添加表达式,代码如下:
注意,这种情况的switch后面不再跟判断变量,否则会报错的
package main
import (
"fmt"
)
func main() {
var cj int = 66 //定义变量成绩分数
switch {
case cj < 60: //小于60分
fmt.Println("不及格")
case cj > 60 && cj <= 85: //大于60分小于60分
fmt.Println("成绩良好")
case cj > 85 && cj <= 99: //大于85分小于99分
fmt.Println("成绩优秀")
case cj == 100: //100分
fmt.Println("满分")
default:
fmt.Println("default")
}
}