型switchを勘違いしてて3時間溶かした
入力フォームから送信された値を空interfaceである変数numに格納してnumが整数に変換できるのあればこれは整数です
と、そうでなければなにこれ
を出力するプログラムをgoで書こうとしたのだがどうもうまくいかなかった。
package main import "fmt" func main() { var num interface{} = "5" switch num.(type) { case int: fmt.Println("これは整数です") default: fmt.Println("なにこれ") } }
この場合なにこれ
が出力される。考えてみれば当たり前なのだがnumに渡してる5
はstring型なのでint型ではない。だからなにこれ
が出力される。
しかし私は「整数に変換できるのなら整数に変換してくれる」と勝手に思い込んでいたため、このコードが意図した挙動をしないことに気づくまでおよそ3時間ほどかかった(かかりすぎ)