我是Go的新手,不确定如何解决此问题。用OOP术语,我有Animal的基类和Cat和Dog的两个子类。我想为Animal指定一个ToJson方法,该方法适用于所有动物。
我的问题是,当我调用dog.ToJson()时,我只获得dog的Dog属性,而没有Animal属性。
如何使ToJson正常工作(即使用递归)?
编辑:更改代码以反映lbonn回答中的建议,但我无法按照我的意愿进行工作。edit2:代码更改后问题的一致性
package main
import (
"encoding/json"
"fmt"
)
type Animal struct {
Name string
}
type Cat struct {
CatProperty int64
Animal
}
type Dog struct {
DogProperty int64
Animal
}
func ToJson(i interface{}) []byte {
data,err := json.Marshal(i)
if err != nil {
panic("???")
}
return data
}
func main() {
dog := Dog{}
dog.Name = "rex"
dog.DogProperty = 2
fmt.Println(string(ToJson(dog)))
// Prints {"DogProperty":2}
// I want it to print {"Name":"rex","DogProperty":2}
}
慕码人8056858
相关分类