プログラムを制御せよ!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 変数の初期化;条件式 {
case 値1:
処理1
case 値2:
処理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
サポートお願いいたします.主に初心者から中級向けに,ソフトウェア開発に関する知識を提供していきます.