Switch 中如何强制执行下一个 case 代码块 ?

在许多编程语言中(如C或者C++),switch语句会“贯穿”(fall through):如果一个case匹配成功并且没有遇到break语句,那么控制流就会继续执行下一个case的代码。然而,在Go语言中,switch语句的行为和这些语言不同:当一个case匹配成功后,控制流会直接跳过剩余的case,并且从switch语句后的第一条语句继续执行。

如果你希望在Go语言的switch语句中实现类似于“贯穿”的行为,你可以使用fallthrough关键字。fallthrough关键字会强制执行下一个case的代码,无论下一个case的条件是否满足。

以下是一个例子:

package main

import "fmt"

func main() {
    switch 1 {
    case 1:
        fmt.Println("case 1")
        fallthrough
    case 2:
        fmt.Println("case 2")
    default:
        fmt.Println("default case")
    }
}

在这个例子中,switch语句首先检查第一个casecase 1),因为1等于1,所以这个case被执行。然后,fallthrough关键字强制执行下一个case的代码,即使1不等于2。因此,这段代码的输出将是:

case 1
case 2

请注意,fallthrough关键字必须是case代码块的最后一条语句,否则会导致编译错误。此外,fallthrough不能用在switch语句的最后一个case或者default中,因为在这些位置,没有下一个case可以执行。

发表评论

后才能评论