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
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) } }
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!