为了账号安全,请及时绑定邮箱和手机立即绑定

如果 xml.Marshal 为空,则忽略结构

如果 xml.Marshal 为空,则忽略结构

Go
明月笑刀无情 2023-06-19 17:03:22
我需要输出一个 XML 文件,并且我构建了一些表示它的结构作为一个基本示例,如下所示:type Parent struct {    XMLName xml.Name `xml:"parent"`    Name    string   `xml:"name,omitempty"`    Age     int64    `xml:"age,omitempty"`    Child   Child    `xml:"child,omitempty`}type Child struct {    XMLName  xml.Name `xml:"child,omitempty"`    Name     string   `xml:"name,omitempty"`    Gender   string   `xml:"gender,omitempty"`    Thoughts string   `xml:",innerxml,omitempty"`}我希望当我创建一个Parent不定义子项,然后将其编组到一个 XML 文件中时......parent := Parent{    Name: "Beatrice",    Age: "23",}_ = xml.MarshalIndent(parent, "", "    ")...我应该得到一个不包含child标签的 XML 文件:<parent>    <name>Beatrice</name>    <age>23</age></parent>相反,我得到这个:<parent>    <name>Beatrice</name>    <age>23</age>    <child></child></parent>为什么空<child></child>标签在那里,我怎样才能摆脱它?
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

您有一些语法错误,但可以将 child 设置为指针:


type Parent struct {

    XMLName xml.Name `xml:"parent"`

    Name    string   `xml:"name,omitempty"`

    Age     int64    `xml:"age,omitempty"`

    Child   *Child    `xml:"child,omitempty"`

}

当它为零时,它将是空的。


工作演示


查看完整回答
反对 回复 2023-06-19
  • 1 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信