首頁 > 後端開發 > Golang > 如何有效率地將CSV資料反序列化為Go結構?

如何有效率地將CSV資料反序列化為Go結構?

Susan Sarandon
發布: 2024-12-02 18:24:12
原創
512 人瀏覽過

How to Efficiently Deserialize CSV Data into Go Structures?

問題:

如何有效率地將 CSV 記錄反序列化為 Go 結構?

問題陳述:

假設你有一個自訂的 Go 結構測試,包含「姓名」、「姓氏」和「年齡」欄位。您有一個 CSV 文件,其中包含以下格式的記錄:

John;Smith;42
Piter;Abel;50
登入後複製

如何自動將這些記錄解組到測試結構的實例中,而不依賴於手動反序列化操作?

答案:

為了簡化反序列化過程,可以考慮使用 gocarina/gocsv 圖書館。 gocsv 提供與encoding/json 套件類似的功能,但專門針對 CSV 資料。

這是一個使用 gocsv 的範例:

package main

import (
    "fmt"
    "log"
    "os"

    "github.com/gocarina/gocsv"
)

type Test struct {
    Name    string `csv:"Name"`
    Surname string `csv:"Surname"`
    Age     int    `csv:"Age"`
}

func main() {
    // Open CSV file for reading
    in, err := os.Open("test.csv")
    if err != nil {
        log.Fatal(err)
    }
    defer in.Close()

    // Declare a slice to hold the Test structures
    var tests []Test

    // Unmarshal the CSV records into the Test structures
    if err := gocsv.UnmarshalFile(in, &tests); err != nil {
        log.Fatal(err)
    }

    // Print the unmarshaled data
    for _, test := range tests {
        fmt.Printf("Name: %s, Surname: %s, Age: %d\n", test.Name, test.Surname, test.Age)
    }
}
登入後複製

在此範例中,gocsv 為您處理反序列化過程,簡化 CSV 記錄到 Go 結構的轉換。您可以在測試結構中使用自訂欄位標籤來指定每個欄位的 CSV 列標題,以確保準確的對應。

以上是如何有效率地將CSV資料反序列化為Go結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板