将 CSV 记录解组到 Go 结构中
问题:
如何自动解组记录从 CSV 文件转换为 Go结构体?
例如,考虑以下 Go 结构体:
type Test struct { Name string Surname string Age int }
以及包含记录的 CSV 文件:
John;Smith;42 Piter;Abel;50
是否有一种有效的方法来解组这些将记录放入结构中,无需手动解析每个记录并分配
答案:
是的,利用 gocarina/gocsv 是一种有效的方法。它允许为自定义类型创建解组和编组函数,类似于encoding/json提供的功能。
示例:
type Client struct { Id string `csv:"client_id"` // .csv column headers Name string `csv:"client_name"` Age string `csv:"client_age"` } func main() { in, err := os.Open("clients.csv") if err != nil { panic(err) } defer in.Close() clients := []*Client{} if err := gocsv.UnmarshalFile(in, &clients); err != nil { panic(err) } for _, client := range clients { fmt.Println("Hello, ", client.Name) } }
通过使用 gocsv ,为 Client 类型定义自定义解组器和编组器函数。这些函数有效地在 CSV 格式和 Go 结构之间进行转换,使解组过程简单高效。
以上是如何有效地将 CSV 数据解组到 Go 结构中?的详细内容。更多信息请关注PHP中文网其他相关文章!