Golang: switch/case

By Xah Lee. Date: . Last updated: .

Switch statement lets you test if a condition is met. It goes thru case statement, if true, that case's statement is executed, and switch exits.

package main

import "fmt"

func main() {
	switch 3 {
	case 4:
		fmt.Println("aa")
	case 3:
		fmt.Println("bb")
	default:
		fmt.Println("dd")
	}
}

// bb

case fallthrough (cascade)

A case body can end with fallthrough. If so, the rest cases are run.

package main

import "fmt"

func main() {
	switch 3 {
	case 4:
		fmt.Println("aa")
	case 3:
		fmt.Println("bb")
		fallthrough
	default:
		fmt.Println("dd")
	}
}

// prints:
// bb
// dd

multiple test in 1 case shortcut

Multiple tests can be combined in one case statement, separated by comma ,.

package main

import "fmt"

func main() {
	switch 3 {
	case 4:
		fmt.Println("aa")
	case 3, 7:
		fmt.Println("bb")
	default:
		fmt.Println("dd")
	}
}

// bb

switch without expression

Switch can be used without expression. If so, each case expression just test for true.

package main

import "fmt"

func main() {
	switch {
	case 4 > 7:
		fmt.Println("aa")
	case 3 > 0:
		fmt.Println("bb")
	default:
		fmt.Println("dd")
	}
}

// bb

Reference

The Go Programming Language Specification - The Go Programming Language#Switch_statements

If you have a question, put $5 at patreon and message me.

Golang

  1. Compile, Run
  2. Source Encoding
  3. Package, Import
  4. Comment
  5. Print
  6. String
  7. Print String
  8. String Backslash Escape
  9. Rune
  10. Variable
  11. Zero Value
  12. Constant
  13. If Then Else
  14. Switch/Case
  15. Loop
  16. Basic Types
  17. Array
  18. Slice
  19. Map
  20. Struct
  21. Function
  22. Closure
  23. Pointer
  24. String, Byte Slice, Rune Slice
  25. regexp
  26. Read File
  27. Write to File
  28. Walk Dir
  29. Check File Exist
  30. System Call
  31. Get Script Path
  32. Defer
  33. Random Number

Examples

  1. Match Any Regexp
  2. Find Replace
  3. Validate Links
  4. Generate Sitemap

Reference

  1. Go Spec