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.NewReaderconReadoReadAllcsv.NewWriterconWrite/WriteAlly despuésFlush- Establezca
Commapara 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.