gpt4 book ai didi

go - 嵌入匿名结构

转载 作者:数据小太阳 更新时间:2023-10-29 03:29:49 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何将匿名结构嵌入另一个结构中,以用于 json 解析目的。

我有一个“附加” map ,其中包含取决于各种因素的不同属性。这张 map 是一个更大的 json blob 的字段。我想完全模拟“额外”映射的各种可能性,这样我就可以避免使用类型断言。我想让“额外”结构与基本结构(json 的其余部分)分开。我知道我可以做这样的事情:

type TestObj1 struct {
ExtraObj `json:"extras"`
}

type ExtraObj struct {
Foo string `json:"foo"`
}

效果很好,因为 json 解析完全符合我的预期,而且我可以直接访问 Foo,就像 testObj1.Foo 一样。这种方法的问题是,现在每个可能的“额外”变体我有 2 个不同的结构,而不是 1 个。所以我可以尝试这样的事情:

type TestObj2 struct {
Extras struct {
Foo string `json:"foo"`
} `json:"extras"`
}

这也会按预期解析 json,并且不再需要每个变体 2 个结构。但问题是,要访问 Foo,我需要像 testObj2.Extras.Foo 这样通过 Extras。我希望像这样的两全其美的解决方案:

type TestObj3 struct {
struct {
Foo string `json:"foo"`
} `json:"extras"`
}

但这是一个编译错误。快速playground link我为此准备了。

有没有什么办法可以完成这样的事情,或者在语言上是不可能的?非常感谢您的帮助!

最佳答案

尝试以下操作:

type TestObj1 struct {
ExO ExtraObj `json:"extras"`
}

type ExtraObj struct {
Foo string `json:"foo"`
}

我自己没有测试过,但应该可以。

关于go - 嵌入匿名结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45518424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com