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

  • 相关阅读:
    EF Core1.0 CodeFirst为Modell设置默认值!
    MvcPager分页控件使用注意事项!
    一个关于A标签和分页的怪问题!
    让Visual Studio Code对jQuery支持智能提示!
    MVC中获取所有按钮,并绑定事件!
    EF6.0 Code First使用mysql的各种错误和解决办法!!
    记住 MVC里用formcollection接收form表单传来的值,表单属性必须有name为健!
    Hibernate处理oracle lob总结
    怎样写 OpenStack Neutron 的 Extension (一)
    怎样写 OpenStack Neutron 的 Extension (二)
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/14647090.html
Copyright © 2011-2022 走看看