gpt4 book ai didi

json - 在 golang 中编辑继承属性的标签?

转载 作者:IT王子 更新时间:2023-10-29 01:39:21 27 4
gpt4 key购买 nike

type Parent struct {
Name string `json:"parent_name"`
}

type Child struct {
Parent
}

假设我有两个结构 ParentChild。我有两个端点使用这两个结构读取 json

// Sample Parent endpoint payload
{
"parent_name": "Parent Name"
}

// Sample Child endpoint payload
{
"child_name": "Child Name"
}

这两个结构都用于存储相似的数据,但是 json 键对于每个端点负载是不同的。有没有一种方法可以编辑 Child 结构上的 json 标记,使 Child 仍然继承自 Parent,但是标签现在是 json:"child_name"?

最佳答案

Go 没有继承,只有组合。不要从父子关系的角度来考虑它。

在您的示例中,您可以混合使用 json:",omitempty" 标记和“field shadowing”来获得结果:

type Parent struct {
Name string `json:"parent_name,omitempty"`
}

type Child struct {
Parent
Name string `json:"child_name"`
}

Playground :http://play.golang.org/p/z72dCKOhYC .

但这仍然没有捕获要点(如果 child.Parent.Name 不为空则中断)。如果您要“覆盖”每个嵌入 Parent 的结构中的字段,为什么它一开始就在那里?

关于json - 在 golang 中编辑继承属性的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34718094/

27 4 0