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

用 Go 将 XML 解码成接口类型?

用 Go 将 XML 解码成接口类型?

Go
倚天杖 2021-08-10 14:55:56
是否可以使用 Go 1.3 将 XML 解码为接口类型?例如,如果结构看起来像这样(简化):type Field interface { ... }// DataField and ControlField satisfy Field interfacetype DataField struct { ... } // <- One concrete type, with XML tagstype ControlField struct { ... } // <- Another concrete type, with XML tagstype Record struct {    Fields []Field // <- Field is an interface}...// we want to decode into a record, e.g.var record Recorddecoder.DecodeElement(&record, &se)...据我所知,可以使用具体类型解码 XML,例如:type Record struct {    ControlFields []ControlField // <- Using concrete type works    DataFields []DataField // <- Using concrete type works}但是接口类型失败了,尽管使用正确的 XML 标记对实现进行了注释。有关可运行的示例,请参阅http://play.golang.org/p/tPlw4Y74tt或作为gist。
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

从看代码的encoding/xml包,现在看来,接口类型是刚刚跳过:


...


switch v := val; v.Kind() {


case reflect.Interface:

    // TODO: For now, simply ignore the field. In the near

    //       future we may choose to unmarshal the start

    //       element on it, if not nil.

    return p.Skip()


...

转到版本:1.3。


查看完整回答
反对 回复 2021-08-10
  • 2 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

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