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.NewReadercomReadouReadAllcsv.NewWritercomWrite/WriteAll, seguido deFlush- Defina
Commapara 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.