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("第四季")
    }
}

猜你喜欢

转载自www.cnblogs.com/xiaobaiskill/p/10591089.html