將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中文網其他相關文章!