encoding/csv
Leggere e scrivere CSV
encoding/csv è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.
Che cos'è il CSV
Il CSV (comma-separated values) memorizza dati tabellari come testo semplice: un record per riga e campi separati da virgole. Il pacchetto Go encoding/csv consente di leggerlo e scriverlo.
Lettura da una stringa
Creare un reader a partire da qualsiasi io.Reader. strings.NewReader avvolge una stringa, così è possibile fare una dimostrazione senza un file.
package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
r := csv.NewReader(strings.NewReader("a,b,c"))
rec, _ := r.Read()
fmt.Println(rec)
}Lettura di tutti i record
ReadAll legge ogni riga e la inserisce in un [][]string. Ogni slice interno contiene i campi di un record.
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)
}Lettura riga per riga
Per i file di grandi dimensioni, leggere un record alla volta con Read. Al termine viene restituito io.EOF.
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)
}
}Accesso ai campi
Ogni record è uno slice di stringhe. Usare l'indice per leggere una colonna.
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])
}Delimitatore personalizzato
Impostare r.Comma per usare un separatore diverso, ad esempio un punto e virgola o una tabulazione.
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)
}Scrittura di CSV
csv.NewWriter scrive i record. Chiamare Flush per inviare i dati memorizzati nel buffer.
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()
}Scrittura di molte righe
WriteAll scrive in una volta sola un intero [][]string ed esegue automaticamente il flush.
package main
import (
"encoding/csv"
"os"
)
func main() {
w := csv.NewWriter(os.Stdout)
rows := [][]string{{"a", "1"}, {"b", "2"}}
w.WriteAll(rows)
}Virgolette automatiche
Il writer racchiude tra virgolette i campi che contengono virgole, virgolette o nuove righe, così l'output rimane un CSV valido.
package main
import (
"encoding/csv"
"os"
)
func main() {
w := csv.NewWriter(os.Stdout)
w.Write([]string{"hello, world", "plain"})
w.Flush()
}Non dimenticare Flush
Il writer memorizza i dati nel buffer. Se si dimentica Flush e non si usa WriteAll, alcune righe potrebbero non essere mai scritte. Eseguire sempre il flush prima che il programma termini.
Gestione degli errori
Dopo il flush, controllare w.Error() per rilevare eventuali errori di scrittura verificatisi durante il 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())
}Verifica rapida
Che cosa restituisce ReadAll di un reader CSV per i dati analizzati?
Riepilogo
encoding/csv:
csv.NewReaderconReadoReadAllcsv.NewWriterconWrite/WriteAll, seguito daFlush- Impostare
Commaper delimitatori personalizzati; le virgolette sono automatiche
Domande Frequenti
La lezione «encoding/csv» è gratuita?
Sì — il testo completo di «encoding/csv» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.
Cosa imparerò in «encoding/csv»?
Leggere e scrivere CSV Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Go Academy?
Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «encoding/csv»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Go Academy?
Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.