1个案例彻底弄懂 Go语言中的switch case语句


注意

  1. switch/case 后是一个表达式(即:常量,变量,一个有返回的函数都可以);

  2. case后的各个表达式的值的数据类型,必须和switch的表达式数据类型一致;

  3. case后面可以带多个表达式,使用逗号间隔;

  4. case后面的表达式如果是常量值,则要求不能重复;

  5. case后面不需要带break,程序匹配到一个case后就会执行对应的代码块,然后退出switch,如果一个都匹配不到,则执行default;

  6. default语句不是必须的;

  7. switch 后也可以不带表达式,类似 if --else分支来使用;

  8. switch 后也可以直接声明一个变量,分号结束,不过不推荐。

  9. switch穿透:如果在case语句增加fallthrough,则会继续执行下一个case,默认只穿透一层。

  10. type-switch :来判断interface变量中实际指向的变量类型,比如:

    package main import ( "fmt" ) func main() { var x interface{} var y = 10 x=y switch i := x.(type) { case nil:

    fmt.Printf("x的类型是:%T",i)

    case int:

    fmt.Printf("x是 int 类型")

    case float64:

    fmt.Printf("x是 float64 类型")

    case func(int) float64:

    fmt.Printf("x是func(int)类型")

    case bool,string:

    fmt.Printf("x是bool或者string类型")

    default:

    fmt.Printf("未知型")

    } }

执行结果如下图:

案例 :根据用户输入的月份,打印该月份所属的季节。

package main

import (
    "fmt"
)

func main() {
    //根据用户输入的月份,打印该月份所属的季节
    var month byte
    fmt.Print("请输入月份:")
    fmt.Scanln(&month)
    switch month {
        case 3, 4, 5:
            fmt.Println("春天")
        case 6, 7, 8:
            fmt.Println("夏天")
        case 9, 10, 11:
            fmt.Println("秋天")
        case 12, 1, 2:
            fmt.Println("冬天")
        default:
            fmt.Println("输入有误...")
    }
}

执行结果如下图所示:

switch和if的选择:

  1. 如果判断的具体数值不多,而且符合整数,浮点数,字符,字符串这几种类型。建议使用switch语句,简洁高效。
  2. 其他情况:对区间判断和结果为bool类型的判断,使用if,if的使用范围更广。

1个案例彻底弄懂 Go语言中的switch case语句介绍到这里,更多Go学习请参考编程字典Go教程 和问答部分,谢谢大家对编程字典的支持。


原文链接:https://blog.csdn.net/cui_yonghua/article/details/93176489?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163523372016780265481777%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163523372016780265481777&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-11-93176489.pc_v2_rank_blog_default&utm_term=go&spm=1018.2226.3001.4450