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

golang中的多类型解码器

golang中的多类型解码器

Go
慕标5832272 2021-07-13 13:43:39
我有一个 XML 文档。某些字段具有自定义格式。例子:<document>  <title>hello world</title>  <lines>   line 1   line 2   line 3  </lines></document>我想将它导入到结构中,如:type Document struct {    Title  string   `xml:"title"`    Lines  []string `xml:"lines"`}有什么方法可以实现自定义解码器,它将行字符串拆分为行数组 ( ["line 1", "line 2", "line 3"])?可以将 Lines 字段设为字符串类型并在 xml 导入后进行拆分,但这似乎不是一个非常优雅的解决方案。有什么方法可以定义用于行拆分的自定义解码器并将其与 xml 解码器结合使用?
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

以下是 CSE 建议的详细示例:


type Document struct {

    Title    string `xml:"title"`

    LineData string `xml:"lines"`

}


func (d *Document)Lines() []string {

    return strings.Split(d.LineData, '\n')

}

这类似于net/http Request所做的:将数据读入一个结构体,然后提供访问器来解释该结构体。


如果您真的不想这样做,那么我使用的另一种方法是创建两个结构体。将原始数据读入第一个,然后使用它来构建第二个。


如果您打算将其作为 JSON 或其他一些有线格式发送出去,则第二个结构可能只是一个映射。


func (d *Document) Map() map[string]interface{} {

    m := make(map[string]interface{})

    m["lines"] = strings.Split(d.LineData, '\n')

    m["title"] = d.Title

    return m

}


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

添加回答

举报

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