zoukankan      html  css  js  c++  java
  • go之switch

    switch 条件语句一

    • 格式
    switch initialization{
        case v1:
        //  do something
        case v2:
        // do something
        case v2:
        // do something
        default:
        // do something
    }
    
    • 实例
    package main
    
    import "fmt"
    
    var num = 12
    func main(){
    	switch num {
    	case 1:
    		fmt.Println("num is 1")
    	case 2:
    		fmt.Println("num is 2")
    	case 3:
    		fmt.Println("num is 3")
    	default:
    		fmt.Println("num is default")
    	}
    }
    
    

    输出 num is default

    switch 条件语句二

    • 格式
        switch {
        case condition1:
            // do somthing
        case condition2:
            // do something
        case condition3:
            // do something
        default:
            // do something
        }
    
    • 实例
    package main
    
    import "fmt"
    
    var (
    	num1 int = 3
    	num2 = 5
    )
    func main(){
    	switch  {
    	case num1 > num2:
    		fmt.Println("num1 大于 num2")
    	case num1 < num2:
    		fmt.Println("num1 小于 num2")
    	default:
    		fmt.Println("num1 == num2")
    	}
    
    	switch s := sum(num1,num2); {
    	case s < 10:
    		fmt.Println("num1 + num2 的和小于 10")
    	case s > 10:
    		fmt.Println("num1 + num2 的和 大于 10")
    	default:
    		fmt.Println("num1 + num2 的和 等于 10")
    	}
    }
    
    
    // 求和 返回 s
    func sum(num1 int,num2 int)(s int){
    	s = num1 + num1
    	return
    }
    
    
    num1 小于 num2
    num1 + num2 的和小于 10
    

    fallthrough

    • fallthrouth 的由来
        在其他类型的语言,如php,switch 语句每一个case 结尾都应该加上一句break; 已表面该结束switch,防止继续往下一个case 执行。但是在go 语言中
        是不需要加 break 的,因为每一个case 结束go编辑器都默认添加了break;
    
        php 语言
        switch ($num){
        case 1:
            // do something
            break;
        case 2:
            // do something
            break;
        default:
            // do something
        }
    
        go 语言
        switch num {
        case 1:
            // do something
        case 2:
            // do something
        default:
            // do soment
        }
    
    
        // 因为go 编辑器自动添加了break;导致了程序不会跳到下一个case执行,所以go 给我们提供了一个关键字 fallthrough,可以在执行case 之后继续下一个case执行
    
    • 实例
    package main
    
    import "fmt"
    
    func main(){
    	Season(1) // 第一季
    	Season(3) // 第一季
    	Season(5) // 第二季
    	Season(6) // 第二季
    	Season(9) // 第三季
    	Season(11) // 第四季
    	Season(12) // 第四季
    }
    
    // 输入月份写季节
    func Season(month int) {
    	switch month {
    	case 1:
    		fallthrough
    	case 2:
    		fallthrough
    	case 3:
    		fmt.Println("第一季")
    	case 4,5,6: // go 中允许多val语句的写法,实际上和加了fallthrough 效果一样
    		fmt.Println("第二季")
    	case 7,8,9:
    		fmt.Println("第三季")
    	case 10:
    		fallthrough
    	case 11:
    		fallthrough
    	case 12:
    		fmt.Println("第四季")
    	}
    }
    
  • 相关阅读:
    BZOJ4779: [Usaco2017 Open]Bovine Genomics
    USACO比赛题泛刷
    BZOJ1977: [BeiJing2010组队]次小生成树 Tree
    LOJ #10132. 「一本通 4.4 例 3」异象石
    $O(n+log(mod))$求乘法逆元的方法
    BZOJ2226: [Spoj 5971] LCMSum
    数据库 | Redis 缓存雪崩解决方案
    中间件 | 微服务架构
    数据库 | SQL 诊断优化套路包,套路用的对,速度升百倍
    数据库 | SQL语法优化方法及实例详解
  • 原文地址:https://www.cnblogs.com/xiaobaiskill/p/10591089.html
Copyright © 2011-2022 走看看