5 switch statement patterns

yourbasic.org/golang

Basic switch with default

A switch statement runs the first case equal to the condition expression.

The cases are evaluated from top to bottom, stopping when a case succeeds.

If no case matches and there is a default case, its statements are executed.

switch time.Now().Weekday() { case time.Saturday: fmt.Println("Today is Saturday.") case time.Sunday: fmt.Println("Today is Sunday.") default: fmt.Println("Today is a weekday.") }

Unlike C and Java, the case expressions do not need to be constants.

No condition

A switch without a condition is the same as switch true.

switch hour := time.Now().Hour(); { case hour < 12: fmt.Println("Good morning!") case hour < 17: fmt.Println("Good afternoon!") default: fmt.Println("Good evening!") }

Case list

func WhiteSpace(c rune) bool { switch c { case ' ', '\t', '

', '\f', '\r': return true } return false }

Fallthrough

A fallthrough statement transfers control to the next case.

statement transfers control to the next case. It may be used only as the final statement in a clause.

switch 2 { case 1: fmt.Println("1") fallthrough case 2: fmt.Println("2") fallthrough case 3: fmt.Println("3") }

2 3

Exit with break

A break statement terminates execution of the innermost for , switch , or select statement.

If you need to break out of a surrounding loop, not the switch, you can put a label on the loop and break to that label. This example shows both uses.

Loop: for _, ch := range "a b

c" { switch ch { case ' ': break case '

': break Loop default: fmt.Printf("%c

", ch) } }

a b

Execution order

First the switch expression is evaluated once.

Then case expressions are evaluated left-to-right and top-to-bottom: the first one that equals the switch expression triggers execution of the statements of the associated case, the other cases are skipped.



func Foo(n int) int { fmt.Println(n) return n } func main() { switch Foo(2) { case Foo(1), Foo(2), Foo(3): fmt.Println("First case") fallthrough case Foo(4): fmt.Println("Second case") } }

2 1 2 First case Second case

Go step by step

Core Go concepts: interfaces, structs, slices, maps, for loops, switch statements, packages.

Share this page: