switch 语句

一个简单的 switch 声明:

switch a + b {
case c:
    // do something
case d:
    // do something else
default:
    // do something entirely different
}

上面的例子相当于:

if a + b == c {
    // do something
} else if a + b == d {
    // do something else
} else {
    // do something entirely different
}

default 子句是可选的,当且仅当所有情况都不比较时才会执行,即使它没有出现在最后,这是可以接受的。以下内容与第一个示例在语义上相同:

switch a + b {
default:
    // do something entirely different
case c:
    // do something
case d:
    // do something else
}

如果你打算在 default 子句中使用 fallthrough 语句,这可能很有用,该语句必须是案例中的最后一个语句,并导致程序执行继续下一个案例:

switch a + b {
default:
    // do something entirely different, but then also do something
    fallthrough
case c:
    // do something
case d:
    // do something else
}

空开关表达式隐含地为 true

switch {
case a + b == c:
    // do something
case a + b == d:
    // do something else
}

Switch 语句支持类似于 if 语句的简单语句:

switch n := getNumber(); n {
case 1:
    // do something
case 2:
    // do something else
}

如果它们共享相同的逻辑,则可以将它们组合在逗号分隔的列表中:

switch a + b {
case c, d:
    // do something
default:
    // do something entirely different
}