ホームページ >バックエンド開発 >Golang >CSV データを Go 構造体に効率的にアンマーシャルする方法は?

CSV データを Go 構造体に効率的にアンマーシャルする方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-05 17:18:10801ブラウズ

How to Efficiently Unmarshal CSV Data into Go Structs?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。