0Pricing
Go Academy · Lezione

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.NewReader con Read o ReadAll
  • csv.NewWriter con Write/WriteAll, seguito da Flush
  • Impostare Comma per 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.

Tutte le lezioni di questo corso

  1. Ripasso di encoding/json
  2. encoding/xml
  3. encoding/csv
  4. gob e codifica binaria
← Torna a Go Academy