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

    #执行结果:

    良好
    

     





  • 相关阅读:
    关于团体项目技术选型的补充
    关于此次团队项目中技术选型问题
    习题3 怎样与用户有效地沟通以获取用户的真实需求?
    面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?请根据自己的理解简明扼要的回答。
    你认为一些军事方面的软件系统采用什么样的开发模型比较合适?
    此次项目之用户手册
    形式化说明技术以及图书流通系统。
    此次项目的需求验证
    随着物流的发展、虚拟技术的发展,实体商场到底以什么样的形式存在(在未来)的呢?
    此次项目的过程模型选择
  • 原文地址:https://www.cnblogs.com/nulige/p/10202141.html
Copyright © 2011-2022 走看看