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("第四季")
	}
}
原文地址:https://www.cnblogs.com/xiaobaiskill/p/10591089.html