Introduction
The switch statement is a conditional statement that allows you to execute different code blocks based on the value of an expression. It is a powerful tool that can simplify your code and make it more readable.
Switch
In this lab, you need to complete the switch statement to print out the corresponding message based on the input value.
- The
switchstatement must be used to solve the problem. - The
defaultcase must be used to handle unexpected input values.
$ go run switch.go
Write 2 as two
It's a weekday
It's after noon
I'm a bool
I'm an int
Don't know type string
There is the full code below:
// _Switch statements_ express conditionals across many
// branches.
package main
import (
"fmt"
"time"
)
func main() {
// Here's a basic `switch`.
i := 2
fmt.Print("Write ", i, " as ")
switch i {
case 1:
fmt.Println("one")
case 2:
fmt.Println("two")
case 3:
fmt.Println("three")
}
// You can use commas to separate multiple expressions
// in the same `case` statement. We use the optional
// `default` case in this example as well.
switch time.Now().Weekday() {
case time.Saturday, time.Sunday:
fmt.Println("It's the weekend")
default:
fmt.Println("It's a weekday")
}
// `switch` without an expression is an alternate way
// to express if/else logic. Here we also show how the
// `case` expressions can be non-constants.
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("It's before noon")
default:
fmt.Println("It's after noon")
}
// A type `switch` compares types instead of values. You
// can use this to discover the type of an interface
// value. In this example, the variable `t` will have the
// type corresponding to its clause.
whatAmI := func(i interface{}) {
switch t := i.(type) {
case bool:
fmt.Println("I'm a bool")
case int:
fmt.Println("I'm an int")
default:
fmt.Printf("Don't know type %T\n", t)
}
}
whatAmI(true)
whatAmI(1)
whatAmI("hey")
}
Summary
In this lab, you learned how to use the switch statement to execute different code blocks based on the value of an expression. You also learned how to handle unexpected input values using the default case.