在 Go 中,通常需要将 CSV 记录反序列化为自定义结构。虽然“encoding/csv”包提供了基本的 CSV 读取,但它需要手动解析并转换为结构。幸运的是,有一些替代解决方案可以简化此过程。
其中一个解决方案是 gocarina/gocsv,它遵循与处理自定义结构的“encoding/json”包相同的方法。它还允许对特定类型进行自定义编组和解组。
考虑示例:
type Client struct { Id string `csv:"client_id"` 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.UnmarshalFile 直接使用反序列化的 Client 结构填充客户端切片。这简化了解组过程,使其比使用标准“编码/csv”方法更加直观和方便。
以上是如何有效地将 CSV 数据解组到 Go 结构中?的详细内容。更多信息请关注PHP中文网其他相关文章!