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 }
Et un fichier CSV contenant des enregistrements :
John;Smith;42 Piter;Abel;50
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) } }
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!