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

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

Barbara Streisand
Barbara Streisandoriginal
2024-12-11 15:32:17257parcourir

How Can I Efficiently Unmarshal CSV Data into Go Structs?

Désérialisez les enregistrements CSV dans des structures Go

Dans Go, il existe un besoin courant de désérialiser les enregistrements CSV dans des structures personnalisées. Bien que le package "encoding/csv" fournisse une lecture CSV de base, il nécessite une analyse manuelle et une conversion en structures. Heureusement, il existe des solutions alternatives qui simplifient ce processus.

L'une de ces solutions est gocarina/gocsv, qui suit la même approche que le package "encoding/json" pour gérer les structures personnalisées. Il permet également un marshalling et un démarshalling personnalisés pour des types spécifiques.

Prenons l'exemple :

type Client struct {
    Id      string `csv:"client_id"`
    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)
    }
}

Ici, gocsv.UnmarshalFile remplit directement la tranche clients avec des structures client désérialisées. Cela simplifie le processus de désorganisation, le rendant plus intuitif et plus pratique que l'utilisation des méthodes standard « encodage/csv ».

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!

Déclaration:
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