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

    #执行结果:

    良好
    

     





  • 相关阅读:
    1026: [SCOI2009]windy数 (数位DP)
    Codeforces Round #603 (Div. 2)
    小明种苹果(续)
    1001: [BeiJing2006]狼抓兔子 (最小割)
    codeforces 990C Bracket Sequences Concatenation Problem
    codeforces990D
    codeforces 1037D. Valid BFS?
    pytorch inception v3 KeyError: <class 'tuple'>解决方法
    codeforces 1025C Plasticine zebra
    codeforces1027D
  • 原文地址:https://www.cnblogs.com/nulige/p/10202141.html
Copyright © 2011-2022 走看看