1. 程式人生 > >go語言中fallthrough用法

go語言中fallthrough用法

switch sExpr {
case expr1:
    some instructions
case expr2:
    some other instructions
case expr3:
    some other instructions
default:
    other code
}

sExpr和expr1、expr2、expr3的型別必須一致。Go的switch非常靈活,表示式不必是常量或整數,執行的過程從上至下,直到找到匹配項;而如果switch沒有表示式,它會匹配true。 Go裡面switch預設相當於每個case最後帶有break,匹配成功後不會自動向下執行其他case,而是跳出整個switch, 但是可以使用fallthrough強制執行後面的case程式碼,fallthrough不會判斷下一條case的expr結果是否為true。

package main

import "fmt"

func main() {

    switch {
    case false:
            fmt.Println("The integer was <= 4")
            fallthrough
    case true:
            fmt.Println("The integer was <= 5")
            fallthrough
    case false:
            fmt.Println("The integer was <= 6"
) fallthrough case true: fmt.Println("The integer was <= 7") case false: fmt.Println("The integer was <= 8") fallthrough default: fmt.Println("default case") } }

執行結果:

The integer was <= 5

The integer was <= 6
The integer was <= 7

從本例可以看出:switch人第一個expr為true的case開始執行,如果case帶有fallthrough,程式會繼續執行下一條case,不會再判斷下一條case的expr,如果之後的case都有fallthrough,default出會被執行。