簡體   English   中英

轉到切換失敗

[英]Go switch fallthrough

我正在嘗試了解switch / fallthrough關鍵字。 在switch塊中使用fallthrough語句意味着即使表達式不匹配也要輸入下一個塊,但這僅在已經存在匹配權時才有效? 下面的代碼似乎可以這樣工作,但我只是想確定一下。

package main

import "fmt"

func main() {
    integer := 5
    switch integer {
    case 4:
        fmt.Println("integer <= 4")
        fallthrough
    case 5:
        fmt.Println("integer <= 5")
        fallthrough
    case 6:
        fmt.Println("integer <= 6")
        fallthrough
    case 7:
        fmt.Println("integer <= 7")
        fallthrough
    case 8:
        fmt.Println("integer <= 8")
        fallthrough
    default:
        fmt.Println("default case")
    }
}

是。 fallthrough語句將控制權轉移到表達式開關中的下一個case子句。 轉移控制權時不考慮下一種情況的表達式。

規范是關於fallthrough聲明的

“ fallthrough”語句將控制權轉移到表達式“ switch”語句中下一個case子句的第一個語句。 它只能用作該子句中的最終非空語句。

這是關於表達式開關的

在case或default子句中,最后一個非空語句可以是(可能標記為)“ fallthrough”語句,以指示控制權應從此子句的末尾流到下一個子句的第一個語句。 否則,控制流到“ switch”語句的末尾。 除了表達式開關的最后一個子句外,“ fallthrough”語句可能作為所有其他語句的最后一個語句出現。

那就對了。 fallthrough語句使它從case子句的最后一條語句轉到下一條的第一個語句,從而跳過后面的case評估。 規格

在case或default子句中,最后一個非空語句可以是(可能標記為)“ fallthrough”語句,以指示控制權應從此子句的末尾流到下一個子句的第一個語句。 否則,控制流到“ switch”語句的末尾。 除了表達式開關的最后一個子句外,“ fallthrough”語句可能作為所有其他語句的最后一個語句出現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM