背景
Javaで散々苦しんだswitch文、Goにも出てきたのでまとめます
環境
go version go1.14.4
windows10
まとめ
JavaとGoのswitch文の大きな違い
Java
条件に合致した際に次の処理を実施しないようにするにはbreakが必要
Go
条件に合致したら次の処理は実施されない。
実施したい場合はfallthroughを入れる必要がある
※型でのswitchの場合は使用できない
ソースと実行例
main.go
package main import ( "fmt" ) // 型アサーションを用いたスイッチの使用例 func main() { // 変数aをすべての型を取れるinterface{}型として定義し、999.999を入れる var a interface{} = 999.999 // aの型でswitchする // [変数名].(type)で型が取得できる switch a.(type) { case bool: fmt.Printf("bool") case int, uint: fmt.Printf("int or uint") case string: fmt.Printf("string") case float64: fmt.Printf("float") case rune: fmt.Printf("rune") default: fmt.Println("don't know") } }
実行例
C:\go>go run main.go float
999.999はfloat64の型に入るのでその出力。
後の実装のrune, defaultは実行されない。