首頁 >後端開發 >Golang >如何有效地將 CSV 資料解組到 Go 結構中?

如何有效地將 CSV 資料解組到 Go 結構中?

Barbara Streisand
Barbara Streisand原創
2024-12-05 17:18:10804瀏覽

How to Efficiently Unmarshal CSV Data into Go Structs?

將CSV 記錄解組到Go 結構中

問題:

問題:

type Test struct {
  Name string
  Surname string
  Age int
}
如何自動解組記錄從CSV 檔案轉換為Go結構體?

例如,考慮以下 Go 結構體:
John;Smith;42
Piter;Abel;50

以及包含記錄的 CSV文件:

是否有一種有效的方法來解組這些將記錄放入結構中,無需手動解析每個記錄並分配

答案:

是的,利用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