switch语句常用于基于大量不同条件来执行不同动作,每一个条件对应一个case分支。
switch语句的执行过程从上至下,直到找到匹配项,匹配项后面也不需要再加break。
每一个switch语句只能包含一个可选的default分支,若没有找到匹配项,会默认执行default分支中的代码块。
Go语言中的switch语法如下:
switch var1 {
case value1:
代码块1
case value2:
代码块2
default:
代码块3
}
变量var1可以是任何类型,但value1和value2必须是相同的类型或最终结果为相同类型的表达式。每个case分支后可跟多个可能符合条件的值,使用逗号分隔它们,例如:case value1,value2,value3。
package main
import "fmt"
func main() {
switch 1+1 {
case 1:
fmt.Println("1+1=1")
case 2:
fmt.Println("1+1=2")
case 3:
fmt.Println("1+1=3")
default:
fmt.Println("1+1不等于1或2或3")
}
}
执行结果如下:
1+1=2
默认情况下,switch匹配成功后就不会执行后续其他case,如果我们需要无条件强制执行后面的 case,可以使用fallthrough关键字。
package main
import "fmt"
func main() {
switch {
//false,肯定不会执行
case false:
fmt.Println("case 1为false")
fallthrough
//true,肯定执行
case true:
fmt.Println("case 2为 true")
fallthrough
//由于上一个case中有fallthrough,即使是false,也强制执行
case false:
fmt.Println("case 3为 false")
fallthrough
default:
fmt.Println("默认 case")
}
}
执行结果如下:
case 2为 true
case 3为 false
默认 case
上述示例中,switch语句省略了条件表达式,表达式由下面的case给出。