首页 > 后端开发 > Golang > 正文

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

Mary-Kate Olsen
发布: 2024-11-04 12:13:30
原创
788 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!