我是 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}
}