golang switchフレキシブル書き方

2005 ワード

switchは分かりやすいので、まずコードを作って、実行して、あなたのオペレーティングシステムが何なのか見てみましょう.
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:
        fmt.Printf("%s", os)
    }
}

runtine実行時に現在のオペレーティングシステムを取得し、GOOSを使用します.if forのような習慣と同様に、付与変数を先に宣言することもできます.ここでオペレーティングシステムの情報を取得します.
os := runtime.GOOS;

{}のcaseの方が分かりやすいです.オペレーティングシステムが「darwin」であれば「OS X.」を印刷する.オペレーティングシステムが「linux」であれば「Linux」を印刷します.その他はシステムカテゴリを直接印刷します.
go言語のswitchではfallthrough文で終了しない限り、ブランチは自動的に終了します.
上のコードを修正して、もう一度実行します.
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.")
    case "windows":
        fmt.Println("win")
        fallthrough
    default:
        fmt.Printf("%s", os)
    }
}

現在のシステムのcaseオプション「windows」を追加し、このブランチでfallghroughを使用しました.
fallthroughを注釈したり、いっそfallthroughを削除して実行したりすると、その貫通の効果はなくなります.
 
まとめ
switchの条件は上から下へ実行され,マッチングに成功すると停止する.マッチングに成功したこのブランチがfallthroughで終了すると、次の隣接するブランチも実行されます.
switchの無条件の使い方.これは実はswitch trueに相当します.各caseオプションはbool式であり、trueの値を持つブランチが実行されるかdefaultが実行されます.
package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Now()
    switch  {
    case t.Hour() > 12:
        fmt.Println("Morning was passed.")
    case t.Hour() > 17:
        fmt.Println("Afternoon was passed.")
    default:
        fmt.Println("Now too early.")

    }
}

参照先:
https://www.yuque.com/docs/share/5f2159e7-372e-4f6d-b5fc-763cc97ee97d