encoding/csv
Læs og skriv CSV
encoding/csv er en gratis Go Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Go Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Go Academy-kurset indeholder 4 lektioner i alt.
Hvad er CSV
CSV (kommaadskilte værdier) gemmer tabeldata som ren tekst, én post pr. linje, med felter adskilt af kommaer. Gos encoding/csv-pakke læser og skriver det.
Læsning fra en streng
Opret en læser fra enhver io.Reader. strings.NewReader omslutter en streng, så vi kan demonstrere det uden en fil.
package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
r := csv.NewReader(strings.NewReader("a,b,c"))
rec, _ := r.Read()
fmt.Println(rec)
}Læsning af alle poster
ReadAll læser hver række ind i en [][]string. Hver indre slice er felterne i én post.
package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
data := "name,age\nAnn,30\nBob,25"
r := csv.NewReader(strings.NewReader(data))
records, _ := r.ReadAll()
fmt.Println(records)
}Læsning række for række
Ved store filer skal du læse én post ad gangen med Read. Den returnerer io.EOF, når der ikke er mere.
package main
import (
"encoding/csv"
"fmt"
"io"
"strings"
)
func main() {
r := csv.NewReader(strings.NewReader("a,1\nb,2"))
for {
rec, err := r.Read()
if err == io.EOF {
break
}
fmt.Println(rec)
}
}Adgang til felter
Hver post er en slice af strenge. Indeksér den for at læse en kolonne.
package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
r := csv.NewReader(strings.NewReader("Ann,30"))
rec, _ := r.Read()
fmt.Println("name:", rec[0], "age:", rec[1])
}Brugerdefineret skilletegn
Indstil r.Comma til at bruge et andet skilletegn, f.eks. et semikolon eller en tabulator.
package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
r := csv.NewReader(strings.NewReader("a;b;c"))
r.Comma = ';'
rec, _ := r.Read()
fmt.Println(rec)
}Skrivning af CSV
csv.NewWriter skriver poster. Kald Flush for at sende bufferede data videre.
package main
import (
"encoding/csv"
"os"
)
func main() {
w := csv.NewWriter(os.Stdout)
w.Write([]string{"name", "age"})
w.Write([]string{"Ann", "30"})
w.Flush()
}Skrivning af mange rækker
WriteAll skriver en hel [][]string på én gang og tømmer automatisk bufferen.
package main
import (
"encoding/csv"
"os"
)
func main() {
w := csv.NewWriter(os.Stdout)
rows := [][]string{{"a", "1"}, {"b", "2"}}
w.WriteAll(rows)
}Automatiske anførselstegn
Skriveren sætter anførselstegn omkring felter, der indeholder kommaer, anførselstegn eller linjeskift, så outputtet forbliver gyldig CSV.
package main
import (
"encoding/csv"
"os"
)
func main() {
w := csv.NewWriter(os.Stdout)
w.Write([]string{"hello, world", "plain"})
w.Flush()
}Glem ikke Flush
Skriveren gemmer data i en buffer. Hvis du glemmer Flush (og ikke bruger WriteAll), bliver nogle rækker muligvis aldrig skrevet. Tøm altid bufferen, før programmet afsluttes.
Håndtering af fejl
Efter tømning af bufferen skal du kontrollere w.Error() for at opdage eventuelle skrivefejl, der opstod under buffering.
package main
import (
"encoding/csv"
"fmt"
"os"
)
func main() {
w := csv.NewWriter(os.Stdout)
w.Write([]string{"x", "y"})
w.Flush()
fmt.Fprintln(os.Stderr, w.Error())
}Hurtigt tjek
Hvad returnerer en CSV-læsers ReadAll for de fortolkede data?
Opsummering
encoding/csv:
csv.NewReadermedReadellerReadAllcsv.NewWritermedWrite/WriteAllog derefterFlush- Indstil
Commatil brugerdefinerede skilletegn; anførselstegn sættes automatisk
Lær Go med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 51
- Lektioner
- 203
Ofte stillede spørgsmål
Er lektionen “encoding/csv” gratis?
Ja — alle 3 lektioner i læringssporet Go Academy, inklusive “encoding/csv”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Go Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “encoding/csv”?
Læs og skriv CSV Du øver dig i Go Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Go Academy?
Der kræves ingen tidligere erfaring. Go Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “encoding/csv”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Go Academy-lektion?
Ja. Alle Go Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.