Функция csv.NewReader

Функция csv.NewReader создает новый ридер для чтения CSV-данных из переданного в параметре io.Reader. Возвращаемый объект *csv.Reader предоставляет методы для построчного или полного чтения записей. Ридер автоматически обрабатывает стандартные настройки CSV: запятая в качестве разделителя, двойные кавычки для экранирования.

Синтаксис

gocsv.NewReader(r io.Reader) *csv.Reader

Пример

Давайте прочитаем все записи из CSV-строки с разделителем запятой:

gopackage main

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

func main() {
  data := "name,age,city\nJohn,30,NY\nJane,25,LA"
  r := csv.NewReader(strings.NewReader(data))

  records, err := r.ReadAll()
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  for _, record := range records {
    fmt.Println(record)
  }
}

Результат выполнения кода:

go[name age city]
[John 30 NY]
[Jane 25 LA]

Пример

Давайте прочитаем CSV-строку с точкой с запятой в качестве разделителя, изменив настройки ридера:

gopackage main

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

func main() {
  data := "id;product;price\n1;apple;1.50\n2;banana;0.75"
  r := csv.NewReader(strings.NewReader(data))
  r.Comma = ';' // устанавливаем разделитель

  records, err := r.ReadAll()
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  for _, record := range records {
    fmt.Println(record)
  }
}

Результат выполнения кода:

go[id product price]
[1 apple 1.50]
[2 banana 0.75]

Смотрите также

  • функцию csv.NewWriter,
    которая создает объект для записи CSV-данных
  • метод csv.Reader.ReadAll,
    который читает все записи из CSV
  • метод csv.Reader.Read,
    который читает одну запись из CSV
  • структуру csv.ParseError,
    которая описывает ошибки разбора CSV