1 回答
TA贡献1799条经验 获得超6个赞
虽然数据中的分隔符是 ,但包默认使用 。;,
因此,我们需要将包配置为使用不同的分隔符。根据文档,这可以通过可自定义的CSV阅读器实现:
gocsv.SetCSVReader(func(in io.Reader) gocsv.CSVReader {
r := csv.NewReader(in)
r.Comma = ';' // This is our separator now
return r
})
这将配置包中的所有功能。
您的代码应如下所示以包含更改:
package main
import (
"encoding/csv"
"fmt"
"io"
"log"
"github.com/gocarina/gocsv"
)
// GeoAdresseCsv is a test structcd
type GeoAdresseCsv struct {
ID int `csv:"id"`
IDBan string `csv:"id_ban"`
}
func main() {
gocsv.SetCSVReader(func(in io.Reader) gocsv.CSVReader {
r := csv.NewReader(in)
r.Comma = ';' // This is our separator now
return r
})
var adresseDB []GeoAdresseCsv
stringCsv := `id;id_ban
2908743;28009_0019_00008`
err := gocsv.UnmarshalString(stringCsv, &adresseDB)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", adresseDB)
}
现在输出是预期值:
[{ID:2908743 IDBan:28009_0019_00008}]
您可以在此处在线运行它。
- 1 回答
- 0 关注
- 72 浏览
添加回答
举报