无法解组不受支持的类型

时间:2018-10-21 00:29:24

标签: xml go

例如,在尝试封送XML时,采用这样的结构:

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

C不可编组,这对我来说很好。它应该被忽略。但是,我发现的最多的是omitempty属性,在这里无效。封送该结构的每次尝试都将失败。

我考虑的是以下内容:

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

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

这两个都不理想,因为它离开了

1 个答案:

答案 0 :(得分:5)

documentation中所述,将“ xml”结构字段标记设置为-可以防止对该字段进行封送处理:

  

结构的XML元素包含该结构的每个导出字段的封送元素,但以下情况除外:

     

....

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