Go では、CSV レコードをカスタム構造体に逆シリアル化する必要がよくあります。 「encoding/csv」パッケージは基本的な CSV 読み取りを提供しますが、手動で解析して構造体に変換する必要があります。幸いなことに、このプロセスを簡素化する代替ソリューションがあります。
そのようなソリューションの 1 つは gocarina/gocsv です。これは、カスタム構造体を処理するための「encoding/json」パッケージと同じアプローチに従います。また、特定の型のカスタム マーシャリングとアンマーシャリングも可能です。
次の例を考えてみましょう。
type Client struct { Id string `csv:"client_id"` 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.UnmarshalFile は、逆シリアル化されたクライアント構造体をクライアント スライスに直接設定します。これにより、アンマーシャリング プロセスが簡素化され、標準の「エンコーディング/CSV」メソッドを使用するよりも直感的で便利になります。
以上がCSV データを Go 構造体に効率的にアンマーシャルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。