Switch Statements in Go

Switch statements in Go provide a concise and flexible way to evaluate multiple conditions based on the value of an expression. They offer a cleaner alternative to multiple if-else statements, especially when dealing with a large number of possible conditions. This chapter aims to provide a comprehensive guide to switch statements in Go, covering basic usage, advanced features, and best practices.

Basic Switch Statement

The basic syntax of a switch statement in Go consists of the switch keyword followed by an expression to evaluate. Each case within the switch statement represents a possible value for the expression. Let’s explore a basic example

				
					package main

import "fmt"

func main() {
    day := "Monday"

    switch day {
    case "Monday":
        fmt.Println("It's Monday")
    case "Tuesday":
        fmt.Println("It's Tuesday")
    case "Wednesday":
        fmt.Println("It's Wednesday")
    case "Thursday":
        fmt.Println("It's Thursday")
    case "Friday":
        fmt.Println("It's Friday")
    case "Saturday":
        fmt.Println("It's Saturday")
    case "Sunday":
        fmt.Println("It's Sunday")
    default:
        fmt.Println("Invalid day")
    }
}

				
			
  • We declare a variable day and assign it a value of “Monday”.
  • The switch statement evaluates the value of day and executes the corresponding case block.
  • If no match is found, the default case is executed.

Fallthrough

In Go, each case in a switch statement automatically breaks at the end, meaning only one case is executed. However, you can use the fallthrough keyword to explicitly fall through to the next case. Let’s see an example:

				
					package main

import "fmt"

func main() {
    num := 2

    switch num {
    case 1:
        fmt.Println("One")
        fallthrough
    case 2:
        fmt.Println("Two")
        fallthrough
    case 3:
        fmt.Println("Three")
    }
}

				
			
  • We declare a variable num and assign it a value of 2.
  • The switch statement evaluates the value of num and falls through from case 2 to case 3, printing “Two” and “Three” sequentially.

Switch with No Expression

In Go, a switch statement can also be used without an expression. This form of switch is useful when evaluating multiple conditions based on boolean expressions. Let’s see an example:

				
					package main

import "fmt"

func main() {
    age := 20

    switch {
    case age < 18:
        fmt.Println("You are a minor")
    case age >= 18 && age < 65:
        fmt.Println("You are an adult")
    default:
        fmt.Println("You are a senior citizen")
    }
}

				
			
  • We declare a variable age and assign it a value of 20.
  • The switch statement evaluates boolean expressions and executes the corresponding case block based on the first true condition.

Type Switch

In addition to switching on values, Go allows switching on types, a feature known as type switch. This allows you to perform different actions based on the type of a given interface variable. Let’s see an example:

				
					package main

import (
    "fmt"
    "reflect"
)

func main() {
    var x interface{}
    x = 10

    switch x.(type) {
    case int:
        fmt.Println("x is an integer")
    case float64:
        fmt.Println("x is a float")
    case string:
        fmt.Println("x is a string")
    default:
        fmt.Println("x is of unknown type")
    }
}

				
			
  • We declare a variable x of type empty interface.
  • We assign it a value of 10, which is an integer.
  • The switch statement evaluates the type of x using the .type assertion and executes the corresponding case block based on its type.

Multiple Expressions in Case

Go allows specifying multiple expressions in a single case statement, separated by commas. This can be useful for handling multiple values with the same outcome. Let’s see an example:

				
					package main

import "fmt"

func main() {
    day := "Monday"

    switch day {
    case "Monday", "Tuesday", "Wednesday", "Thursday", "Friday":
        fmt.Println("It's a weekday")
    case "Saturday", "Sunday":
        fmt.Println("It's a weekend")
    default:
        fmt.Println("Invalid day")
    }
}

				
			
  • We declare a variable day and assign it a value of “Monday”.
  • The switch statement evaluates the value of day and executes the corresponding case block if it matches any of the specified values.

Tagless Switch

In Go, a switch statement can be used without an expression or a tag. This form of switch is particularly useful for writing clean and concise code when handling boolean conditions. Let’s see an example:

				
					package main

import "fmt"

func main() {
    x := 10
    y := 20

    switch {
    case x > y:
        fmt.Println("x is greater than y")
    case x < y:
        fmt.Println("x is less than y")
    default:
        fmt.Println("x and y are equal")
    }
}

				
			
  • We declare two variables x and y and assign them values of 10 and 20, respectively.
  • The switch statement evaluates boolean conditions without a specified expression and executes the corresponding case block based on the first true condition

Switch statements in Go provide a flexible and efficient way to handle multiple conditions based on the value of an expression. They offer cleaner syntax compared to multiple if-else statements and support features like fallthrough and switch without an expression. By mastering switch statements, you'll be able to write more readable and maintainable Go code. Happy coding !❤️

Table of Contents

Contact here

Copyright © 2025 Diginode

Made with ❤️ in India