Skip to main content

19. 控制流:Switch 语句

yaklang的switch语句在go语言本身的switch语句的基础上做了一定的调整。

  1. yaklang的switch语句继承go的优秀特性:
  2. 支持fallthrough
  3. 支持逗号表达式分割,相当于或。
  4. 但是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*/