Lendo arquivo CSV com Golang

Utilizando o Golang para ler arquivos CSV.

Necessário ter instalado:

Baixe o projeto:

  1. Projeto e descompacte;
  2. Depois execute o comando go run read_csv.go para executar a aplicação.

Gopher

Código:

package main

import (
	"bufio"
	"encoding/csv"
	"fmt"
	"io"
	"log"
	"strings"
)

// CSV : csv
type CSV struct { //estrutura que receberá os dados do CSV
	Name     string `json:"name"`
	Nickname string `json:"nickname"`
	Text     string `json:"text"`
}

func checkErr(err error) { //checa erros
	if err != nil {
		log.Panic("ERROR: " + err.Error())
	}
}

func main() {
	//sem arquivo
	var csvFile = strings.NewReader(`name;nickname;text
	Valéria;Valchan;has been here!`)

	// com arquivo
	//csvFile, err := os.Open("test.csv") //abre arquivo
	//checkErr(err)

	reader := csv.NewReader(bufio.NewReader(csvFile)) //lê arquivo
	reader.Comma = ';'                                //define delimitador

	var person []CSV

	for {
		line, err := reader.Read() //para cada linha
		if err == io.EOF {
			break
		} else if err != nil {
			checkErr(err)
		}
		person = append(person, CSV{ //adiciona uma pessoa
			Name:     line[0],
			Nickname: line[1],
			Text:     line[2],
		})
	}

	// personJSON, err := json.Marshal(person) //converte para JSON
	// checkErr(err)
	// fmt.Println(string(personJSON)) //exibe dados do csv
	// //[{"name":"name","nickname":"nickname","text":"text"},{"name":"Valéria","nickname":"Valchan","text":"has been here!"}]

	fmt.Println(person[1].Nickname + " " + person[1].Text) //exibe dados do csv
	// Valchan has been here!
}

Link para o código: Github

Comentários