zoukankan      html  css  js  c++  java
  • 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)
    	}
    

    参考资料

  • 相关阅读:
    把字符串输入到表格里
    x 的 x 次方等于10,求 x
    java 中 二进制串与浮点数的相互转化
    堆栈 Objective-C NSString copy strong
    c一些学习过程中突然错过的细节
    视图控制器
    名词从句
    FastDFS
    Python
    http 提交表单数据
  • 原文地址:https://www.cnblogs.com/HachikoT/p/15782328.html
Copyright © 2011-2022 走看看