19. 控制流:Switch 语句
yaklang的switch语句在go语言本身的switch语句的基础上做了一定的调整。
- yaklang的switch语句继承go的优秀特性:
- 支持fallthrough
- 支持逗号表达式分割,相当于或。
- 但是yaklang不支持 go风格的 switch 赋值语句;表达式
可以通过几个简单的例子快速熟悉yak的switch语句
a = 1switch a {case 1: println("a = 1")case 2: println("a = 2")default: println("a != 1 && a != 2")}/* OUTPUT:a = 1*/
// case中可以使用,分割多个表达式,相当于或关系a = 2switch a {case 1, 2: println("a = 1 || a = 2")case 3: println("a = 3")default: println("a != 1 && a != 2 && a != 3")}/* OUTPUT:a = 1 || a = 2*/
// case短路c = 0switch 1 {case 1, fn{c++}://第一个条件满足后,就不判断后面的条件,类似或逻辑运算的短路性质 c += 1case 2: c += 4default: c += 8}assert c == 1
// switch后可以不用表达式switch {case true: println("true")default: println("default")}/* OUTPUT:true*/
// fallthrough,会不判断继续执行下一个casea = 1switch {case 1: println("a = 1") fallthroughcase 2: println("case 2")
}/* OUTPUT:a = 1case 2*/