強くなりたい

毎日無意識に生きてて良くない

型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時間ほどかかった(かかりすぎ)