我有一个变量名为data,它是一个接口类型。当我打印它的类型时,显示为json.Number。如何将其转换为int/int64/float64类型?如果我尝试使用data.(float64)进行类型转换,会出现panic错误。
panic: interface conversion: interface {} is json.Number, not float64
data.(json.Number).Int64()
这里需要对实际底层类型进行类型断言,而不是任意的类型。这意味着如果一个接口的底层类型是json.Number
,那么你需要将其类型断言为json.Number
。此外,在 Go 中,v.(T)
不是转换,而是类型断言。 - mkoprivajson.Number
的底层类型可能是string
,但这两种类型并不相同,因此将一个类型断言为另一个类型注定会失败,但是将一个类型转换为另一个类型是可以的。 - mkopriva