0Pricing
Go Academy · Aula

encoding/csv

Leia e escreva CSV

encoding/csv é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.

O que é CSV

CSV (valores separados por vírgulas) armazena dados tabulares como texto simples, um registro por linha, com os campos separados por vírgulas. O pacote encoding/csv do Go lê e grava esse formato.

Lendo de uma cadeia de caracteres

Crie um leitor a partir de qualquer io.Reader. strings.NewReader encapsula uma cadeia de caracteres para que possamos demonstrar o funcionamento sem um arquivo.

package main

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

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

Lendo todos os registros

ReadAll lê todas as linhas em um [][]string. Cada fatia interna contém os campos de um 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)
}

Lendo linha por linha

Para arquivos grandes, leia um registro por vez com Read. Ele retorna io.EOF quando 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)
	}
}

Acessando campos

Cada registro é uma fatia de cadeias de caracteres. Use o índice para ler uma coluna.

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

Defina r.Comma para usar um separador diferente, como um ponto e vírgula ou uma tabulação.

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

Gravando CSV

csv.NewWriter grava registros. Chame Flush para enviar os dados armazenados no 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()
}

Gravando várias linhas

WriteAll grava um [][]string inteiro de uma vez e faz o flush automaticamente.

package main

import (
	"encoding/csv"
	"os"
)

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

Colocação automática entre aspas

O gravador coloca entre aspas os campos que contêm vírgulas, aspas ou quebras de linha, mantendo a saída como um CSV válido.

package main

import (
	"encoding/csv"
	"os"
)

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

Não se esqueça de Flush

O gravador armazena os dados em um buffer. Se você esquecer Flush (e não usar WriteAll), algumas linhas talvez nunca sejam gravadas. Sempre faça o flush antes do fim do programa.

Lidando com erros

Depois de fazer o flush, verifique w.Error() para detectar falhas de gravação ocorridas durante o armazenamento em buffer.

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ção rápida

O que o ReadAll de um leitor CSV retorna para os dados analisados?

Recapitulação

encoding/csv:

  • csv.NewReader com Read ou ReadAll
  • csv.NewWriter com Write/WriteAll, seguido de Flush
  • Defina Comma para usar delimitadores personalizados; a colocação entre aspas é automática

Perguntas Frequentes

A aula “encoding/csv” é grátis?

Sim — o texto completo de “encoding/csv” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.

O que vou aprender em “encoding/csv”?

Leia e escreva CSV Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Go Academy?

Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “encoding/csv”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Go Academy?

Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Revisão de encoding/json
  2. encoding/xml
  3. encoding/csv
  4. gob e codificação binária
← Voltar para Go Academy