首页 >后端开发 >Golang >如何解组 Go 中的嵌入式结构?

如何解组 Go 中的嵌入式结构?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-04 12:13:30843浏览

How to Unmarshal Embedded Structs in Go?

在 Go 中解组嵌入式结构

本文解决了将 JSON 数据解组到包含嵌入式结构的结构的问题。提供的示例中,Inner 结构嵌入到 Outer 结构中,演示了调用 Inner 的默认 UnmarshalJSON 方法,并且仅填充 Data 字段,而将 Outer 的 Num 字段留空。

原因因为这种行为在于 Go 的嵌入式结构机制。当嵌入式结构体被解组时,解组过程直接针对嵌入式结构体并忽略外部结构体的字段。

为了解决这个问题,提出了一个更简单、更高效的解决方案:使内部结构体成为显式字段在 Outer 结构中。

通过显式声明 Inner 作为字段,可以使用整个 JSON 数据调用 Outer 结构的 UnmarshalJSON 方法。在此方法中,可以使用嵌入的 Inner 结构体的 UnmarshalJSON 方法填充 Inner 的 Data 字段,而可以单独填充 Num 字段。这种方法确保在解组期间正确填充外部结构的两个字段。

这是一个说明解决方案的工作示例:

<code class="go">type Outer struct {
    I Inner     // Inner as explicit field
    Num int `json:"Num"`
}</code>

以上是如何解组 Go 中的嵌入式结构?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn