switch 条件语句一
- 格式
switch initialization{ case v1: // do something case v2: // do something case v2: // do something default: // do something}
- 实例
package mainimport "fmt"var num = 12func 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 mainimport "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") }}// 求和 返回 sfunc sum(num1 int,num2 int)(s int){ s = num1 + num1 return}
num1 小于 num2num1 + 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 mainimport "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("第四季") }}