Frage:
Wie kann ich CSV-Datensätze effizient in Go-Strukturen deserialisieren?
Problemstellung:
Angenommen, Sie haben einen benutzerdefinierten Go-Strukturtest mit den Feldern Name, Nachname und Alter. Sie verfügen über eine CSV-Datei mit Datensätzen im folgenden Format:
John;Smith;42 Piter;Abel;50
Wie können Sie diese Datensätze automatisch in Instanzen der Teststruktur entpacken, ohne auf manuelle Deserialisierungsvorgänge angewiesen zu sein?
Antwort:
Um den Deserialisierungsprozess zu vereinfachen, sollten Sie die Verwendung der Bibliothek gocarina/gocsv in Betracht ziehen. gocsv bietet eine ähnliche Funktionalität wie das Paket „encoding/json“, ist jedoch speziell auf CSV-Daten ausgerichtet.
Hier ist ein Beispiel für die Verwendung von 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) } }
In diesem Beispiel übernimmt gocsv den Deserialisierungsprozess für Sie. Vereinfachung der Konvertierung von CSV-Datensätzen in Go-Strukturen. Sie können benutzerdefinierte Feldtags in der Teststruktur verwenden, um die CSV-Spaltenüberschriften für jedes Feld anzugeben und so eine genaue Zuordnung sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie deserialisiere ich CSV-Daten effizient in Go-Strukturen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!