0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Go言語(プログラミング)入門メモ③-3

Posted at

switch文で条件に応じた処理を実行する

if文以外にも条件に応じて別の処理を実行する方法がある。今回はそのような用途で使うswitch文について学習する。

switch文を使用した条件ごとの処理

変数osの判定を行う。変数の値がmacのときはMAC!!と返し、windowsのときはWiindows!と非常時する。また、それ以外の場合はDefault!!と返す処理を作成したいときは以下のように書く

os := "mac"
switch os {
    case "mac":
    fmt.Println("MAC!!")
    case "windows": 
    fmt.Println("Windows!!")
    default:
    fmt.Println("Default!!")
}
//MAC!!と出力される

defaultはどの条件に当てはまらなかった場合される処理だが、この記載は必須ではない。記載を行わず、どのcaseにも当てはまらない場合は何の処理も行われない。

変数宣言とswitch文をまとめて書く

if文同様変数への代入とswitch文はまとめて1行で記載することができる。
getOsNameという関数を作り、返り値として文字列のmacを返すとする。この関数の返り値を変数osに代入する場合を考える。

func getOsName() string {
    return "mac"
}

func main() {
    os := getOsName()
    switch os {
    case "mac":
    fmt.Println("MAC!!")
    case "windows": 
    fmt.Println("Windows!!")
    default:
    fmt.Println("Default!!")
    }
}
//MAC!!と出力される

switch文以降で変数osを使わない場合は、変数への代入とswitch文を1行で書く。以下コードでは、switch文の後ろで変数に値を代入し、;でつなげてswitch文が判断する変数(os)を記載している

func getOsName() string {
    return "mac"
}

func main() {
    switch os := getOsName(); os {
    case "mac":
    fmt.Println("MAC!!")
    case "windows": 
    fmt.Println("Windows!!")
    default:
    fmt.Println("Default!!")
    }
}
//MAC!!と出力される

caseに条件式を書くパターン

timeパッケージを使用して、現在の時間を扱うtime.Nowという関数を使ってみる。

import (
    "fmt"
    "time"
)

func main () {
    t := time.Now()
    fmt.Println(t.Hour())
}

//実行したときの現在時間が表示される。
例として11が表示されることとする

今までは変数osをswitchの条件式として書いていたが、今回は書かない。
1つ目のケースとして、Hourで取得した時刻が12時よりも前だった場合Morningを出力し、2つ目のケースとして17時よりも後だったらAfternoonを出力するような処理を書こうとすると以下のようになる。

t := time.Now()
fmt.Println(t.Hour())

switch {
case t.Hour()< 12:
    fmt.Println("Morning")
case t.Hour()> 17:
    fmt.Println("Afternoon")
}
//
11
Morning
と表示される

switch文に条件式を書かずに、caseに判定条件を書く、というパターンもあるということを抑える。

学習に使用した教材

・『入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)』M.A EduTech
https://www.udemy.com/course/golang-webgosql/?utm_medium=udemyads&utm_source=bene-msa&utm_campaign=responsive&utm_content=top-1&utm_term=general&msclkid=81e2f24a32cc185d275d953d60760226&couponCode=NEWYEARCAREERJP

・『シリコンバレー一流プログラマーが教える Goプロフェッショナル大全』酒井 潤 (著)
https://www.amazon.co.jp/%E3%82%B7%E3%83%AA%E3%82%B3%E3%83%B3%E3%83%90%E3%83%AC%E3%83%BC%E4%B8%80%E6%B5%81%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC%E3%81%8C%E6%95%99%E3%81%88%E3%82%8B-Go%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%83%83%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB%E5%A4%A7%E5%85%A8-%E9%85%92%E4%BA%95-%E6%BD%A4/dp/4046070897

正月坊主にとりあえず1日はならず良かったです。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?