diff --git a/examples.txt b/examples.txt index 878ca2f..28a79f4 100644 --- a/examples.txt +++ b/examples.txt @@ -5,7 +5,7 @@ Hello World # Constants # For If/Else -# Switch +Switch Arrays Slices Maps diff --git a/examples/switch/switch.go b/examples/switch/switch.go index 11f0d32..7af3156 100644 --- a/examples/switch/switch.go +++ b/examples/switch/switch.go @@ -1,30 +1,45 @@ -// Switch statements allow... +// _Switch statements_ express conditionals across many +// branches. package main import "fmt" +import "time" func main() { - fmt.Print("Write 3 as ") - i := 3 - // Some basic commentary on switches. + + // Here's a basic `switch`. + i := 2 + fmt.Print("Write ", i, " as ") switch i { - case 0: - fmt.Println("zero") case 1: fmt.Println("one") case 2: fmt.Println("two") case 3: fmt.Println("three") - case 4: - fmt.Println("four") - case 5: - fmt.Println("five") - // The `default` branch is optional in a `switch`. + } + + // 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().String() { + case "Saturday", "Sunday": + fmt.Println("It's the weekend") default: - fmt.Println("???") + 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") } } -// todo: more complex / non-constant switch? +// todo: type switches diff --git a/examples/switch/switch.sh b/examples/switch/switch.sh index 60c3fe9..1f30eff 100644 --- a/examples/switch/switch.sh +++ b/examples/switch/switch.sh @@ -1,2 +1,5 @@ $ go run switch.go Write 3 as three +It's the weekend +It's before noon +