問題:
如何有效率地將 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中文網其他相關文章!