次のように int を float64 に変換できます。
var a int = 10
var b float64 = float64(a)
型アサーションに関して、Effective Go は次のように述べています。
それを念頭に置いて、なぜ次のことが失敗するのですか:
func foo(a interface{}) {
fmt.Println(a.(float64))
}
func main() {
var a int = 10
foo(a)
}
これにより、panic: interface conversion: interface is int, not float64
.
Go Spec には次のように記載されていることに注意してください。
'インターフェイス型の式 x と型 T の場合、一次式
x.(T)
x が nil ではなく、x に格納されている値が T 型であることをアサートします。
これはEffective Goステートメントと矛盾していますが、私が見ているものとより一致しているようです.