LoginSignup
0
0

More than 3 years have passed since last update.

Goでのswitchを用いた条件分岐

Posted at

背景

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0