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

Comment regrouper efficacement les données CSV dans des structures Go ?

Barbara Streisand
Libérer: 2024-12-05 17:18:10
original
800 Les gens l'ont consulté

How to Efficiently Unmarshal CSV Data into Go Structs?

Désassembler les enregistrements CSV dans Go Structs

Question :

Comment puis-je désorganiser automatiquement les enregistrements d'un fichier CSV vers des structures Go ?

Par exemple, considérez ce qui suit Allez struct :

type Test struct {
  Name string
  Surname string
  Age int
}
Copier après la connexion

Et un fichier CSV contenant des enregistrements :

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

Existe-t-il un moyen efficace de regrouper ces enregistrements en structures sans analyser manuellement chaque enregistrement ni attribuer de valeurs ?

Réponse :

Oui, en utilisant gocarina/gocsv est une méthode efficace. Il permet la création de fonctions de démarshalling et de marshalling pour les types personnalisés, similaires à la fonctionnalité fournie par encoding/json.

Exemple :

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

En employant gocsv , les fonctions personnalisées de démarshaller et de marshaller sont définies pour le type Client. Ces fonctions traduisent efficacement entre le format CSV et les structures Go, rendant le processus de démarchage simple et efficace.

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