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
}