52

当你到达一个 Go 案例的末尾时会发生什么,它是否会进入下一个,或者假设大多数应用程序不想失败?

4

2 回答 2

90

不,Go switch 语句默认情况下不会失败。如果您确实希望它失败,则必须明确使用fallthrough语句。从规格

在 case 或 default 子句中,最后一个非空语句可能是(可能标记为)“fallthrough”语句,以指示控制应该从该子句的末尾流向下一个子句的第一个语句。否则控制流到“switch”语句的末尾。“fallthrough”语句可能作为表达式 switch 的最后一个子句之外的所有语句的最后一个语句出现。

例如(对不起,我一辈子都想不出一个真实的例子):

switch 1 {
case 1:
    fmt.Println("I will print")
    fallthrough
case 0:
    fmt.Println("I will also print")
}

输出:

I will print
I will also print

https://play.golang.org/p/va6R8Oj02z

于 2016-11-26T20:20:40.027 回答
7

Break 保留为默认值,但不保留。如果你想进入下一个匹配的案例,你应该明确提到失败。

switch choice {
case "optionone":
    // some instructions 
    fallthrough // control will not come out from this case but will go to next case.
case "optiontwo":
   // some instructions 
default: 
   return 
}
于 2019-08-12T23:06:20.177 回答