LoginSignup
0
0

More than 1 year has passed since last update.

【自己学習】Go言語を学ぶ(8)

Posted at

公式チュートリアルから基本を学ぶ

Switch

switch 文は if - else 文のシーケンスを短く書く方法です。

サンプルコード:実行したOSを調べる

package main

import (
  "fmt"
  "runtime"
)

func main() {
  fmt.Print("Go runs on ")
  switch os := runtime.GOOS; os {
  case "darwin":
    fmt.Println("OS X.")
  case "linux":
    fmt.Println("Linux.")
  default:
    // freebsd, openbsd,
    // plan9, windows...
    fmt.Printf("%s.\n", os)
  }
}

Switch evaluation order(評価順序の切り替え)

switch caseは、上から下へcaseを評価します。 caseの条件が一致すれば、そこで停止(自動的にbreak)します。

サンプルコード:次の土曜日まで何日かを調べる

package main

import (
  "fmt"
  "time"
)

func main() {
  fmt.Println("When's Saturday?")
  today := time.Now().Weekday()
  switch time.Saturday {
  case today + 0:
    fmt.Println("Today.")
  case today + 1:
    fmt.Println("Tomorrow.")
  case today + 2:
    fmt.Println("In two days.")
  default:
    fmt.Println("Too far away.")
  }
}

Switch with no condition(無条件で切り替える)

条件のないswitchは、 switch true と書くことと同じです。

このswitchの構造は、長くなりがちな "if-then-else" のつながりをシンプルに表現できます。(if文をわかりやすく)

サンプルコード:現在時刻から表示を変化

package main

import (
  "fmt"
  "time"
)

func main() {
  t := time.Now()
  switch {
  case t.Hour() < 12:
    fmt.Println("Good morning!")
  case t.Hour() < 17:
    fmt.Println("Good afternoon.")
  default:
    fmt.Println("Good evening.")
  }
}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0