• 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("其它")
    	}
    }
    

    #执行结果:

    良好
    

     





  • 相关阅读:
    Creating Bootstrapper Packages
    匹配Google查询URL关键字
    DotNetNuke模块Unhandled error loading module问题解决
    当WCF的定义过大时vs.net无法添加引用.
    SQL 去除时间
    2012年终总结(一)
    GDI+生成证书带二维码
    linq to xml基础
    Jquery ligerUI的使用
    vs2012 用户类和xml 、xaml不高亮显示的解决办法
  • 原文地址:https://www.cnblogs.com/nulige/p/10202141.html
Copyright © 2020-2023  润新知