我的包中有以下结构。
type Animal struct {
Id string
// and some more common fields
}
使用我的包的用户应该能够实现自己的Animals。正如我Id在我的一种方法中需要的那样,用户必须嵌入我的结构。
type Dog struct {
Animal
Name string
Legs int
}
在我的包中,我有一个save()将Animals保存到数据库的函数。由于我不知道用户的类型,因此我必须将其interface{}用作参数类型。我的问题是:如何获取Id(从父结构体Animal)?目前我使用了一些 JSON 解析和解组,但这是要走的路吗?
func put(doc interface{}) error {
res, err := json.Marshal(doc)
if err != nil {
return err
}
var animal *Animal
err = json.Unmarshal(res, &animal)
if err != nil {
return err
}
fmt.Println(animal.Id) // finally I have the Id
// ...
}
用法
func main() {
bello := Dog{
Animal: Animal{
Id: "abcd1234",
},
Name: "bello",
Legs: 4,
}
err := put(bello)
// ...
}
慕的地8271018
慕无忌1623718
桃花长相依
相关分类