go之switch语句
作用
switch是为了优雅的替换掉if-else
语法
switch 变量 { case 条件: 执行1 case 条件2: 执行2 case 条件3: 执行3 }
基本使用
package main import "fmt" func main() { var a =5 switch a { case 3: fmt.Println("a是3") case 5: fmt.Println("a是5") case 10: fmt.Println("a是10") } }
//a是5
default的使用(默认情况)
其他情况都不匹配时,将运行默认的情况
package main import "fmt" func main() { var a =2 switch a { case 3: fmt.Println("a是3") case 5: fmt.Println("a是5") case 10: fmt.Println("a是10") default: fmt.Println("不知道你是几") } }
// 不知道你是几
多表达式判断
通过用逗号分隔,可以在一个case中包含多个表达式
package main import "fmt" func main() { var a =9 switch a { case 1,2,3: fmt.Println("a是3") case 4,5,6,7,8,9: fmt.Println("a是5") case 10,11,12,15: fmt.Println("a是10") default: fmt.Println("不知道你是几") } }
//a是5
无表达式
在switch语句中,表达式是可选的,可以被省略。如果省略表达式,则表示这个switch语句等同于switch true ,并且每个case表达式都被认定为有效,相应的代码块也会被执行
package main import "fmt" func main() { var a = 4 switch { case a == 2 || a == 3: // 条件 fmt.Println("2,3") case a == 4: // 条件 fmt.Println("4") default: fmt.Println("不知道") } }
//4
Fallthrough的使用
在go中,每执行完一个case后,会从switch语句中跳出来,不再做后续case的判断和执行,使用Fallthrough语句可以在已经执行完成的case之后,把控制权转移到下一个case的执行代码中
package main import "fmt" func main() { var a = 4 switch a { case 2, 3: fmt.Println("2,3") fallthrough case 4, 5: fmt.Println("4,5") fallthrough // 位置必须是case内部,五条件执行下一个 case 6, 7: fmt.Println("6,7") //fallthrough // 位置必须是case内部,五条件执行下一个 default: fmt.Println("不知道") } }
// 结果
//4,5
//6,7
注意:Fallthrough语句应该是case子句的最后一个语句,如果他出现在了case语句的中间,编译器将会报错fallthrough statement out of place