Do Go switch/cases fallthrough or not?
GoSwitch StatementFall ThroughGo Problem Overview
What happens when you reach the end of a Go case, does it fall through to the next, or assume that most applications don't want to fall through?
Go Solutions
Solution 1 - Go
No, Go switch statements do not fall through by default. If you do want it to fall through, you must explicitly use a fallthrough
statement. From the spec:
> In a case or default clause, the last non-empty statement may be a > (possibly labeled) "fallthrough" statement to indicate that control > should flow from the end of this clause to the first statement of the next clause. Otherwise control flows to the end of the "switch" > statement. A "fallthrough" statement may appear as the last statement of all but the last clause of an expression switch.
For example (sorry, I could not for the life of me think of a real example):
switch 1 {
case 1:
fmt.Println("I will print")
fallthrough
case 0:
fmt.Println("I will also print")
}
Outputs:
I will print
I will also print
Solution 2 - Go
Break is kept as a default but not fallthrough. If you want to get onto the next case for a match, you should explicitly mention fallthrough.
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
}