背景
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は実行されない。