質問:
CSV レコードを Go 構造体に効率的に逆シリアル化するにはどうすればよいですか?
問題文:
次のようなカスタム Go 構造 Test があるとします。フィールド 名前、姓、年齢。次の形式のレコードを含む 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 構造への変換を簡素化します。 Test 構造体でカスタム フィールド タグを使用して各フィールドの CSV 列ヘッダーを指定し、正確なマッピングを確保できます。
以上がCSV データを Go 構造体に効率的に逆シリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。