CSV レコードを Go 構造体にアンマーシャルする
質問:
レコードを自動的にアンマーシャルするにはどうすればよいですかCSV ファイルから Go へstructs?
たとえば、次の Go 構造体を考えてみましょう:
type Test struct { Name string Surname string Age int }
レコードを含む CSV ファイル:
John;Smith;42 Piter;Abel;50
これらをアンマーシャリングする効率的な方法はありますか?各レコードを手動で解析して代入することなく、レコードを構造体に変換します。
答え:
はい、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 を使用することにより、カスタムのアンマーシャラー関数とマーシャラー関数がクライアント タイプに対して定義されています。これらの関数は CSV 形式と Go 構造体の間で効果的に変換を行い、アンマーシャリング プロセスを簡単かつ効率的にします。
以上がCSV データを Go 構造体に効率的にアンマーシャルする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。