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

CSV データを Go 構造体に効率的に逆シリアル化する方法は?

Susan Sarandon
リリース: 2024-12-02 18:24:12
オリジナル
439 人が閲覧しました

How to Efficiently Deserialize CSV Data into Go Structures?

質問:

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート