0Pricing
Go Academy · Lección

encoding/csv

Lea y escriba CSV

encoding/csv es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

Qué es CSV

CSV (valores separados por comas) almacena datos tabulares como texto plano: un registro por línea y los campos separados por comas. El paquete de Go encoding/csv permite leerlos y escribirlos.

Leer desde una cadena

Cree un lector a partir de cualquier io.Reader. strings.NewReader envuelve una cadena para que podamos hacer una demostración sin usar un archivo.

package main

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

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

Leer todos los registros

ReadAll lee todas las filas en un [][]string. Cada slice interna contiene los campos de un registro.

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

Leer fila por fila

Para archivos grandes, lea un registro cada vez con Read. Devuelve io.EOF cuando termina.

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

Acceder a los campos

Cada registro es un slice de cadenas. Use su índice para leer una columna.

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

Delimitador personalizado

Establezca r.Comma para utilizar otro separador, como un punto y coma o un tabulador.

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

Escribir CSV

csv.NewWriter escribe registros. Llame a Flush para enviar los datos almacenados en el búfer.

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

Escribir muchas filas

WriteAll escribe de una vez un [][]string completo y vacía el búfer automáticamente.

package main

import (
	"encoding/csv"
	"os"
)

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

Comillas automáticas

El escritor añade comillas a los campos que contienen comas, comillas o saltos de línea, para que la salida siga siendo un CSV válido.

package main

import (
	"encoding/csv"
	"os"
)

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

No olvide Flush

El escritor almacena los datos en un búfer. Si olvida Flush (y no utiliza WriteAll), es posible que algunas filas nunca se escriban. Vacíe siempre el búfer antes de que termine el programa.

Gestionar errores

Después de llamar a Flush, compruebe w.Error() para detectar cualquier error de escritura ocurrido durante el almacenamiento en el búfer.

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

Comprobación rápida

¿Qué devuelve ReadAll de un lector CSV para representar los datos analizados?

Repaso

encoding/csv:

  • csv.NewReader con Read o ReadAll
  • csv.NewWriter con Write/WriteAll y después Flush
  • Establezca Comma para usar delimitadores personalizados; las comillas son automáticas

Preguntas frecuentes

¿La lección «encoding/csv» es gratis?

Sí — el texto completo de «encoding/csv» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «encoding/csv»?

Lea y escriba CSV Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «encoding/csv»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Repaso de encoding/json
  2. encoding/xml
  3. encoding/csv
  4. gob y codificación binaria
← Volver a Go Academy