14.9.1 switch 表达式

在表达式 switch 语句中:

  • 首先评估 switch 表达式,

  • 然后按顺序评估 case 表达式,从上到下:

    • 如果有的话,第一个等于 switch 表达式的表达式会触发执行相关 case 的语句,并跳过所有剩余的 case。

    • 否则,如果没有匹配的 case,则

      • 如果有 default case,则执行它的语句,并

      • 如果没有,则不执行任何语句。

case 子句具有以下语法:

case ExpressionList : StatementList

表达式switch语句最多可以有一个缺省大小写子句:

default : StatementList

非最后一个case子句的StatementList 的最后一个非空语句可能是一个 fallthrough 语句,在这种情况下,控制应该“落到”下一个 case 子句。

以下是一些表达式 switch 语句的示例。

var result string

switch num {
default: result = "Don't know" // 默认情况下总是最后检查,不管它被放在哪里。也就是说,例如,如果num是4,那么在这个switch语句的最后,结果就变成了 "Even"
case 1, 3, 5: result = "Odd"
case 2, 4, 6: result = "Even"
}
switch {   // 缺少的 switch 表达式等同于 true。也就是说,switch {…​} 与 switch true {…​} 相同。
case x < 0: return -x
case x >= 0: return x
}
switch x := f(); x - 10 {  // 在这个例子中,在 switch 表达式 x-10 之前可以有一个简单语句,即短变量声明 x := f()
case 0: return "10"
default: return "Not 10"
}

最后更新于