見出し画像

プログラムを制御せよ!Switch!(Go言語)

本日は,GoのSwitchです!(Nintendoではありませんw)

GoのSwitch文は,if-else文の短い書き方と言われています!

うん?どうゆうこと?って感じですが,Let's Go!

本日の説明用のソースコードはこちらです!

package main

import (
	"fmt"
	"runtime"
	"time"
)

func main() {
	switchBasis()
	switchWithNoCondition(time.Now())
}

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

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

上記のコードは,下記のサイトで実行できます!

Switchの基本

Switch文の基本文法はこちらの通りです!

switch 変数の初期化;条件式 {
    case1:
        処理1
    case2:
        処理2
      :
      :
    case 値n:
        処理n
    default :
        デフォルト処理
}

Switch文は,
 ・「条件式」の値と「caseの値」が一致するcaseが実行されます.
 ・caseは上から下の順で評価されます.
 ・特定のcaseに対応する処理が実行されると,Switch文は終了します.
 ・すべてのcaseが一致しない場合,defaultが実行され,
  Switch文は終了します.(defaultは省略可能です!)

そして,従来の言語(C,C++,Java etc.)とは異なり,
  ・break文は不要です!(助長な表現は取り除く!Goの思想ですね!)
  ・「caseの値」は,整数や定数である必要はありません!
   (整数以外の定数や変数,さらに,式などもOKです!)
  ・「変数の初期化」ができます!もちろん,省略可能です!
   (Goのfor文,if文を理解していれば,もうお馴染みですね('ω'))

Goのfor文とif文については,下記の投稿で学習済みです!

条件式がないSwitch文!

こちらをご覧ください。

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

これが,
 GoのSwitch文は,if-else文の短い書き方と言われる所以です!

ふむふむ,Switch文の「条件式」が省略されていますね!
この場合,「条件式」には,trueが入っている場合の挙動になります!
(これも,for文の無限ループと同じですね!)

ということなので,
 上から順にcaseの値がtrueとなる処理が実行されます!
 まさに,if-else文やー ( ゚Д゚) w

ここから先は

1,640字
500円で,本マガジンのすべてを読むことができます.プログラム初心者でもGO言語を習得できるように丁寧な説明を心がけています.もちろん,購読できない方にも,Goの魅力を伝えていきます!

基本的にGoの公式サイトをわかり易く解説していきます.本マガジンは500円です.購入すれば,本マガジン内の全記事がストレスなく読めます!

期間限定 PayPay支払いすると抽選でお得に!

サポートお願いいたします.主に初心者から中級向けに,ソフトウェア開発に関する知識を提供していきます.