私は Go が初めてで、この問題にどのようにアプローチすればよいかわかりません。OOP 用語では、Animal の基本クラスと、Cat と Dog の 2 つのサブクラスがあります。すべての動物で機能する 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}
}