zoukankan      html  css  js  c++  java
  • (转)Go语言switch语句和fallthrough用途

       Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面
    的case代码:

    示例1:
    package main
     
    import "fmt"
     
    func main() {
        num := 3
     
        switch num {
        case 1:
            fmt.Println("按下的是1楼")
        case 2:
            fmt.Println("按下的是2楼")
        case 3:
            fmt.Println("按下的是3楼")
        case 4:
            fmt.Println("按下的是4楼")
        }
    }

    #执行结果

    按下的是3楼

    示例2:

    package main
     
    import "fmt"
     
    func main() {
        num := 5
     
        switch num {
        case 1:
            fmt.Println("按下的是1楼")
            //break //go语言保留了break关键字,跳出switch语言,不写,默认就包含了。
        case 2:
            fmt.Println("按下的是2楼")
        case 3:
            fmt.Println("按下的是3楼")
        case 4:
            fmt.Println("按下的是4楼")
        default:
            fmt.Println("按下的是xxx楼")
        }
    }

    #执行结果

    按下的是xxx楼

    示例3: 需要输入按下的楼层

    package main
     
    import "fmt"
     
    func main() {
        var num int
        fmt.Printf("请按下楼层:")
        fmt.Scan(&num)
     
        switch num {
        case 1:
            fmt.Println("按下的是1楼")
        case 2:
            fmt.Println("按下的是2楼")
        case 3:
            fmt.Println("按下的是3楼")
        case 4:
            fmt.Println("按下的是4楼")
        default:
            fmt.Println("按下的是xxx楼")
        }
    }

    #执行结果:

    请按下楼层:2   #输入2
    按下的是2楼

    用途:fallthrough //不跳出switch语句,后面的无条件执行

    示例4:  

    package main
     
    import "fmt"
     
    func main() {
        var num int
        fmt.Printf("请按下楼层:")
        fmt.Scan(&num)
     
        switch num {
        case 1:
            fmt.Println("按下的是1楼")
            fallthrough //不跳出switch语句,后面的无条件执行
        case 2:
            fmt.Println("按下的是2楼")
            fallthrough
        case 3:
            fmt.Println("按下的是3楼")
            fallthrough
        case 4:
            fmt.Println("按下的是4楼")
            fallthrough
        default:
            fmt.Println("按下的是xxx楼")
        }
    }

    #执行结果

    请按下楼层:1
    按下的是1楼
    按下的是2楼
    按下的是3楼
    按下的是4楼
    按下的是xxx楼

    示例5: (推荐用法)

    package main
     
    import "fmt"
     
    func main() {
     
        switch num := 1; num {
        case 1:
            fmt.Println("按下的是1楼")
        case 2:
            fmt.Println("按下的是2楼")
        case 3:
            fmt.Println("按下的是3楼")
        case 4:
            fmt.Println("按下的是4楼")
        default:
            fmt.Println("按下的是xxx楼")
        }
    }

    #执行结果:

    按下的是1楼

    示例6:  case 后面接数字,可以写多个

    package main //必须有一个main包
     
    import "fmt"
     
    func main() {
        //支持一个初始化语句, 初始化语句和变量本身, 以分号分隔
        switch num := 4; num { //switch后面写的是变量本身
        case 1:
            fmt.Println("按下的是1楼")
     
        case 2:
            fmt.Println("按下的是2楼")
     
        case 3, 4, 5:
            fmt.Println("按下的是yyy楼")
     
        case 6:
            fmt.Println("按下的是4楼")
     
        default:
            fmt.Println("按下的是xxx楼")
        }
    }

    #执行结果:

    按下的是yyy楼  

    示例7:

    package main
     
    import "fmt"
     
    func main() {
        score := 85
        switch {
        case score > 90:  //case后面可以放条件
            fmt.Println("优秀")
        case score > 80:
            fmt.Println("良好")
        case score > 70:
            fmt.Println("一般")
        default:
            fmt.Println("其它")
        }
    }

    #执行结果:

    良好

    转自:https://www.cnblogs.com/nulige/p/10202141.html

  • 相关阅读:
    纯js面试题
    js面试题汇总:
    css面试题-圣杯布局
    6.1 React组件 Component的两个问题
    7.1 React异步加载
    vscode插件配置jsx:
    6.2 React renderProps 和 HOC组件优化
    2.5 React高阶组件HOC
    04 Python学习之数据类型-bytes
    03 Python学习之Python基础
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/14647090.html
Copyright © 2011-2022 走看看