2016-11-26 37 views
1

当您到达Go案件的末尾时,会发生什么情况?是否会转入下一个案例,或者假设大多数应用程序不想经历?做开关/案件是否贯穿?

+3

[“的情况下或默认条款,最后的非空语句可能是一个(可能被标记为)“fallthrough”语句,表示控制应该从该子句的末尾流到下一个子句的第一个语句,否则控制流到“switch”语句的末尾。 https://golang.org/ref/spec#Switch_statements) –

+0

nope,但你可以明确指定,b y使用'fallthrough'关键字 –

回答

5

不,默认情况下,Go开关语句不会通过。如果你希望它贯穿,你必须明确地使用“fallthrough”语句。从spec

在的情况下,或默认条款,最后的非空语句可以是 (可能标记的)“下通”语句,以指示控制 应该从这个子句到的端部流 下一条款的第一条语句。否则控制流向“开关” 声明的末尾。 “fallthrough”语句可能会显示为表达式切换的最后一个子句的最后一个语句 。

例如(对不起,我不能为我的生活想象一个真实的例子的):

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

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

+0

注意; 'fallthrough'必须是最后一件事;尽管您可以使用[labels](https://github.com/golang/go/wiki/Switch#fall-through) –