go switch语法
作者:互联网
switch语法
在go中,switch
可以支持传入各种类型进行选择,从实现上来说相当于从第1个case
到最后一个case
遍历进行比较,执行最先满足条件的case
。
并且go语言还规定必须要显式写明fallthrough
语句才会接着执行下一个case
,不用再写break
了。这样其实更合理一些,因为绝大部分情况都是这个语义的,何必再在每个case
里面写上break
呢。
func main() {
var weakDay string
fmt.Scan(&weakDay)
switch weakDay {
case "Mon.":
fmt.Println(1)
case "Tues.":
fmt.Println(2)
case "Wed.":
fmt.Println(3)
case "Thurs.":
fmt.Println(4)
case "Fri.":
fmt.Println(5)
case "Sat.":
fmt.Println(6)
case "Sun.":
fmt.Println(7)
default:
panic("wrong day")
}
}
支持一个case
里面多种情况。
func main() {
var weakDay string
fmt.Scan(&weakDay)
switch weakDay {
case "Mon.", "Tues.", "Wed.", "Thurs.", "Fri.":
fmt.Println("work day")
case "Sat.", "Sun.":
fmt.Println("weakend")
default:
panic("wrong day")
}
}
可以不传入参数,替代繁琐的if else
写法。这里每个case
挨个判断,进入最先满足条件的case
执行。
func main() {
var score int
fmt.Scan(&score)
switch {
case score < 60:
fmt.Println("不及格")
case score >= 60 && score < 80:
fmt.Println("不错")
case score >= 80:
fmt.Println("优秀")
default:
panic("wrong number")
}
}
type switch
type switch
是go语言中一种特殊的switch
语法,它比较的是类型而不是具体的值。
和普通的类型断言一样,要求进行断言的变量是接口类型的。并且在type switch
中不允许使用fallthrough
语句。
switch x.(type) {
case nil:
doSomeThing()
case Type1:
doSomeThing()
case Type2:
doSomeThing()
default:
doSomeThing()
}
为了方便进行类型转换,type switch
还可以设定一个值来提前保存转换之后得到的值。
switch value := x.(type) {
case nil:
doSomeThing()
case Type1:
doSomeThing(value)
case Type2:
doSomeThing(value)
default:
doSomeThing(value)
}
参考资料
标签:case,doSomeThing,fmt,语法,Println,switch,go,type 来源: https://www.cnblogs.com/HachikoT/p/15782328.html