首页 >后端开发 >Golang >如何有效地将 CSV 数据解组到 Go 结构中?

如何有效地将 CSV 数据解组到 Go 结构中?

Barbara Streisand
Barbara Streisand原创
2024-12-05 17:18:10863浏览

How to Efficiently Unmarshal CSV Data into Go Structs?

将 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn