登录
首页 >  Golang >  Go问答

无法解组不支持的类型

来源:stackoverflow

时间:2024-04-02 11:36:36 351浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《无法解组不支持的类型》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

例如,当尝试编组 xml 时,采用如下结构:

type Example struct{
    A int
    B int
    C func() int  // Unmarshallable
}

c 是不可编组的,这对我来说没问题;它应该被忽略。然而,我发现最多的是 omitempty 属性,它在这里无效。每次封送该结构的尝试都会失败。

我考虑的是以下内容:

  1. 为函数创建一个全新的类型并附加 marshalxml 方法。
  2. 创建一个新结构并在编组之前手动将每个字段复制到新结构中。
  3. 将 marshalxml 方法附加到示例结构本身。
  4. 使 c 成为未导出的属性,然后将其设置在其各自的包内。

所有这些都不太理想,但 4) 似乎是最吸引人的。我愿意接受任何其他有关编组结构的建议,但忽略 c。

其中任何一个都不太理想,因为它会留下


解决方案


将“xml”结构字段标记设置为 - 将阻止对该字段进行封送,如 documentation 中所述:

结构的 xml 元素包含该结构的每个导出字段的编组元素,但以下情况除外:

...

  • 省略带有标签“-”的字段。
type Example struct{
    A int
    B int
    C func() int `xml:"-"`
}

以上就是《无法解组不支持的类型》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>