Switch statements
express conditionals across many
branches.
packagemain
import("fmt""time")
funcmain(){
Here’s a basic
switch
.
i:=2fmt.Print("Write ",i," as ")switchi{case1:fmt.Println("one")case2:fmt.Println("two")case3: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.
switchtime.Now().Weekday(){casetime.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{caset.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(iinterface{}){switcht:=i.(type){casebool:fmt.Println("I'm a bool")caseint:fmt.Println("I'm an int")default:fmt.Printf("Don't know type %T\n",t)}}whatAmI(true)whatAmI(1)whatAmI("hey")}
$ 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