我有这个代码。我希望接口的类型声明为int。但是,接口的类型是float64。任何人都可以解释为什么会这样吗?什么是绕过它的最好方法。
package main
import (
"fmt"
"encoding/json"
)
type obj struct {
X interface{}
}
func main() {
var x int
x = 5
o := &obj {
X: x,
}
b, _ := json.Marshal(o)
var newObj obj
json.Unmarshal(b, &newObj)
if _, ok := newObj.X.(int); ok {
fmt.Println("X is an int")
} else if _, ok := newObj.X.(float64); ok {
fmt.Println("X is a float64")
} else {
fmt.Println("This does not make any sense")
}
}
此代码打印" X是一个float64"。您可以在那里运行代码https://play.golang.org/p/9L9unW8l3n