switch条件语句

大纲

视频地址https://www.bilibili.com/video/BV14a4y177XG?p=8

switch语句

switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止

Golang学习笔记 7.switch条件语句

Go的switch语句与C语言的不同点:

  1. 与if类似,swtich的条件也不需要用括号()括住
  2. switch默认情况下case最后自带break语句,匹配成功后就不会执行其他case,如果要达到和C一样的效果,可以使用fallthrough
import "fmt"
score := "C"
switch score{
    case "A":
        fmt.Println("蒂花之秀")
    case "B":
        fmt.Println("优秀")
    default:
        fmt.Println("李时珍的皮")
}
// 李时珍的皮

当所有case的条件皆不成立时,default语句块被执行,相当于else

fallthrough语句

使用 fallthrough 会强制执行后面的 case 语句,fallthrough 不会判断下一条 case 的表达式结果是否为 true

import "fmt"
score := "A"
switch score{
    case "A":
        fmt.Println("蒂花之秀")
        fallthrough
    case "B":
        fmt.Println("优秀")
        fallthrough
    default:
        fmt.Println("李时珍的皮")
}
/*
蒂花之秀
优秀
李时珍的皮
*/

多条件判断

case可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3

import "fmt"
var result string
score := 50
switch score{
    case 100,90:result="A"
    case 80,70:result="B"
    case 60:result="C"
    case 50,40,30,20,10,0:result="D"
}
fmt.Println(result) // D

省略条件

没有条件的 switch 同 switch true 一样

利用省略条件的switch来代替if语句,可以使得分支更加清晰

import "fmt"
num := 0
switch{
    case num>0:fmt.Println("大于0")
    case num<0:fmt.Println("小于0")
    default:fmt.Println("等于0")
}

switch前置语句

与if前置语句一样,switch也有前置语句,定义在swtich后,条件之前,同样用;号分隔

可以在前置内执行一个简单的语句,由这个语句定义的变量的作用域仅在switch/case/default范围内

package main
import "fmt"
func main(){
    switch num:=7; num%2==0{
        case true:fmt.Println(num, "偶数")
        case false:fmt.Println(num, "奇数")
    }
    // 注意变量num的作用域只在switch/case/default内
    // 下面这句会报错 undefined: num
    // fmt.Println(num)
}

总结

在某些情况,使用switch语句比if语句更加优雅、清晰

相关文章: