我试图理解 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")
}
}
Run Code Online (Sandbox Code Playgroud)
是的。Fallthrough 语句将控制转移到表达式开关中的下一个 case 子句。转移控制权时不考虑下一个情况的表达式。
规范对于失败声明是这样说的:
“fallthrough”语句将控制转移到表达式“switch”语句中下一个 case 子句的第一个语句。它只能用作此类子句中的最后一个非空语句。
这是关于表达式开关的:
在 case 或 default 子句中,最后一个非空语句可能是(可能标记为)“fallthrough”语句,以指示控制应从本子句的末尾流到下一个子句的第一个语句。否则控制流到“switch”语句的末尾。“fallthrough”语句可能会作为表达式 switch 的最后一个子句之外的所有语句的最后一个语句出现。