fallthrough语句
golang语言规范
https://golang.org/ref/spec#Fallthrough_statements
“fallthrough”语句将控制权转移到 “switch” 语句中下一个case子句的第一条语句。它只能作为这种子句中的最后一个非空语句使用。
参考资料
- go语言fallthrough的用法心得:
- Go里面 switch 默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码。
- fallthrough不能用在switch的最后一个分支
- fallthrough到下一个case块时,不执行case匹配检查!不执行case匹配检查!不执行case匹配检查!
特别注意最后一条,有点和常识不符合(我原本理解的fallthrough只是取消break,然后继续做下一个case的匹配,但实际fallthrough把case匹配检查也取消了):
switch {
case true:
fmt.Println("The integer was <= 5")
fallthrough
case false:
fmt.Println("The integer was <= 6")
fallthrough
default:
fmt.Println("default case")
}
打印结果:
The integer was <= 5
The integer was <= 6
default case