GoCSV:将2个csv列连接到单个结构成员中

GoCSV:将2个csv列连接到单个结构成员中,csv,go,Csv,Go,我可以将两个csv列连接到一个结构成员中吗 CSV格式是这样的 colA, date, time, colB A1, 2017-04-14, 09:50:10, B1 A2, 2017-04-14, 09:50:20, B2 我想将此CSV映射到结构中 type MyStruct struct { ColA string `csv:"colA"` DateTime string // <- like "2017-04-14 09:50:10"

我可以将两个csv列连接到一个结构成员中吗

CSV格式是这样的

colA, date, time, colB
A1, 2017-04-14, 09:50:10, B1
A2, 2017-04-14, 09:50:20, B2
我想将此CSV映射到结构中

type MyStruct struct { 
    ColA       string `csv:"colA"`
    DateTime   string  // <- like "2017-04-14 09:50:10"
    ColB       string `csv:"colB"`
}
类型MyStruct struct{
可乐串`csv:“可乐”`
DateTime string//(a)我认为没有一种受支持的方法可以做到这一点。但是,您可以实现一个自定义读取器,将字段合并到彼此中。我不推荐使用专有的读取器

(b) 为什么不简单地向MyStruct添加一个返回合并值的方法呢

type MyStruct struct { 
    ColA       string `csv:"colA"`
    ColB       string `csv:"colB"`
    ColC       string `csv:"colC"`
}

func (m MyStruct) dateTime() string {
  return ColB+ColC
}

(c) 在解析CSV之前,可能需要使用一点shell fu来预处理它?

中的第一个示例是否回答/解决了这个问题

var csvInput=[]字节(`
姓名、年龄、创建日期
雅切克,262012-04-01T15:00:00Z
约翰,0001-01-01T00:00:00Z`,
)
类型用户结构{
名称字符串`csv:“名称”`
Age int`csv:“年龄,省略为空”`
时间,时间
}
var用户[]用户
如果错误:=csvutil.Unmarshal(csvInput,&users);错误!=nil{
fmt.Println(“错误:”,错误)
}
对于u,u:=范围用户{
fmt.Printf(“%+v\n”,u)
}
//输出:
//{姓名:jacek年龄:26创建日期:2012-04-01 15:00:00+0000 UTC}
//{姓名:约翰年龄:0创建日期:0001-01-01 00:00:00+0000 UTC}