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

  • 相关阅读:
    计网第一章——基本概念
    计网第二章——应用层
    命令行测试邮件发送工具mailsend-go
    CentOS-7-x86_64-DVD-2009 rpm包列表(centos7.9)
    CentOS-7-x86_64-Everything-2009 rpm包列表(CentOS7.9)
    Centos发行版ISO镜像中rpm包列表
    nginx使用记录
    centos resolv.conf
    python cookbook
    ansible中变量和主机名
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/14647090.html
Copyright © 2011-2022 走看看