Maison > développement back-end > Golang > Comment désérialiser efficacement les données CSV dans des structures Go ?

Comment désérialiser efficacement les données CSV dans des structures Go ?

Susan Sarandon
Libérer: 2024-12-02 18:24:12
original
439 Les gens l'ont consulté

How to Efficiently Deserialize CSV Data into Go Structures?

Question :

Comment puis-je désérialiser efficacement les enregistrements CSV dans des structures Go ?

Énoncé du problème :

Supposons que vous disposiez d'un test de structure Go personnalisé, avec les champs Nom, Prénom et Âge. Vous disposez d'un fichier CSV contenant des enregistrements au format :

John;Smith;42
Piter;Abel;50
Copier après la connexion

Comment pouvez-vous automatiquement désorganiser ces enregistrements en instances de la structure Test, sans recourir à des opérations de désérialisation manuelles ?

Réponse :

Pour simplifier le processus de désérialisation, pensez à utiliser la bibliothèque gocarina/gocsv. gocsv offre des fonctionnalités similaires au package encoding/json mais s'adresse spécifiquement aux données CSV.

Voici un exemple utilisant 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)
    }
}
Copier après la connexion

Dans cet exemple, gocsv gère le processus de désérialisation pour vous, simplifiant la conversion des enregistrements CSV en structures Go. Vous pouvez utiliser des balises de champ personnalisées dans la structure Test pour spécifier les en-têtes de colonne CSV pour chaque champ, garantissant ainsi un mappage précis.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal