golang switchフレキシブル書き方
2005 ワード
switchは分かりやすいので、まずコードを作って、実行して、あなたのオペレーティングシステムが何なのか見てみましょう.
runtine実行時に現在のオペレーティングシステムを取得し、GOOSを使用します.if forのような習慣と同様に、付与変数を先に宣言することもできます.ここでオペレーティングシステムの情報を取得します.
{}のcaseの方が分かりやすいです.オペレーティングシステムが「darwin」であれば「OS X.」を印刷する.オペレーティングシステムが「linux」であれば「Linux」を印刷します.その他はシステムカテゴリを直接印刷します.
go言語のswitchではfallthrough文で終了しない限り、ブランチは自動的に終了します.
上のコードを修正して、もう一度実行します.
現在のシステムのcaseオプション「windows」を追加し、このブランチでfallghroughを使用しました.
fallthroughを注釈したり、いっそfallthroughを削除して実行したりすると、その貫通の効果はなくなります.
まとめ
switchの条件は上から下へ実行され,マッチングに成功すると停止する.マッチングに成功したこのブランチがfallthroughで終了すると、次の隣接するブランチも実行されます.
switchの無条件の使い方.これは実はswitch trueに相当します.各caseオプションはbool式であり、trueの値を持つブランチが実行されるかdefaultが実行されます.
参照先:
https://www.yuque.com/docs/share/5f2159e7-372e-4f6d-b5fc-763cc97ee97d
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