0Pricing
Go Academy · Leçon

encoding/csv

Lire et écrire du CSV

encoding/csv est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.

Qu’est-ce que le CSV

Le CSV (valeurs séparées par des virgules) stocke des données tabulaires en texte brut : un enregistrement par ligne et des champs séparés par des virgules. Le paquet encoding/csv de Go permet de le lire et de l’écrire.

Lire depuis une chaîne

Créez un lecteur à partir de n’importe quel io.Reader. strings.NewReader encapsule une chaîne afin que nous puissions faire une démonstration sans fichier.

package main

import (
	"encoding/csv"
	"fmt"
	"strings"
)

func main() {
	r := csv.NewReader(strings.NewReader("a,b,c"))
	rec, _ := r.Read()
	fmt.Println(rec)
}

Lire tous les enregistrements

ReadAll lit chaque ligne dans un [][]string. Chaque tranche interne contient les champs d’un enregistrement.

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)
}

Lire ligne par ligne

Pour les fichiers volumineux, lisez un enregistrement à la fois avec Read. La fonction renvoie io.EOF lorsqu’elle a terminé.

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)
	}
}

Accéder aux champs

Chaque enregistrement est une tranche de chaînes. Utilisez son indice pour lire une colonne.

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])
}

Délimiteur personnalisé

Définissez r.Comma pour utiliser un autre séparateur, comme un point-virgule ou une tabulation.

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)
}

Écrire du CSV

csv.NewWriter écrit les enregistrements. Appelez Flush pour envoyer les données mises en mémoire tampon.

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()
}

Écrire de nombreuses lignes

WriteAll écrit un [][]string entier en une seule fois et vide automatiquement le tampon.

package main

import (
	"encoding/csv"
	"os"
)

func main() {
	w := csv.NewWriter(os.Stdout)
	rows := [][]string{{"a", "1"}, {"b", "2"}}
	w.WriteAll(rows)
}

Mise entre guillemets automatique

Le rédacteur met entre guillemets les champs qui contiennent des virgules, des guillemets ou des retours à la ligne, afin que la sortie reste un CSV valide.

package main

import (
	"encoding/csv"
	"os"
)

func main() {
	w := csv.NewWriter(os.Stdout)
	w.Write([]string{"hello, world", "plain"})
	w.Flush()
}

N’oubliez pas Flush

Le rédacteur met les données en mémoire tampon. Si vous oubliez Flush (et n’utilisez pas WriteAll), certaines lignes risquent de ne jamais être écrites. Videz toujours le tampon avant la fin du programme.

Gérer les erreurs

Après avoir vidé le tampon, vérifiez w.Error() pour détecter les échecs d’écriture survenus pendant la mise en mémoire tampon.

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())
}

Vérification rapide

Que renvoie ReadAll d’un lecteur CSV pour les données analysées ?

Récapitulatif

encoding/csv :

  • csv.NewReader avec Read ou ReadAll
  • csv.NewWriter avec Write / WriteAll, puis Flush
  • Définissez Comma pour utiliser des délimiteurs personnalisés ; la mise entre guillemets est automatique

Questions Fréquemment Posées

La leçon « encoding/csv » est-elle gratuite ?

Oui — le texte complet de « encoding/csv » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « encoding/csv » ?

Lire et écrire du CSV Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Go Academy ?

Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « encoding/csv » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?

Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Récapitulatif de encoding/json
  2. encoding/xml
  3. encoding/csv
  4. gob et encodage binaire
← Retour à Go Academy