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. String Functions
  8. Print String
  9. String Backslash Escape
  10. Rune
  11. Variable
  12. Zero Value
  13. Constant
  14. If Then Else
  15. Switch/Case
  16. Loop
  17. Basic Types
  18. Array
  19. Slice
  20. Map
  21. Struct
  22. Function
  23. Closure
  24. Pointer
  25. String, Byte Slice, Rune Slice
  26. regexp
  27. Read File
  28. Write to File
  29. Walk Dir
  30. Check File Exist
  31. System Call
  32. Get Script Path
  33. Defer
  34. Random Number

Examples

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

Reference

  1. Go Spec