是否可以使用 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。
- 2 回答
- 0 关注
- 202 浏览
添加回答
举报
0/150
提交
取消