Do Go switch/cases fallthrough or not?

GoSwitch StatementFall Through

Go 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

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

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 
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmcandreView Question on Stackoverflow
Solution 1 - GoSam WhitedView Answer on Stackoverflow
Solution 2 - GoMilind DhokeView Answer on Stackoverflow