Функция csv.NewWriter

Функция csv.NewWriter создает новый писатель CSV, который записывает данные в формате CSV в переданный объект io.Writer. В качестве первого параметра функция принимает объект, реализующий интерфейс io.Writer, куда будут записываться данные в формате CSV. Функция возвращает указатель на объект csv.Writer, который можно использовать для записи CSV-данных.

Синтаксис

gocsv.NewWriter(w io.Writer) *csv.Writer

Пример

Давайте создадим писатель CSV, который записывает данные в буфер bytes.Buffer:

gopackage main

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

func main() {
  var buf bytes.Buffer
  writer := csv.NewWriter(&buf)

  err := writer.Write([]string{"name", "age", "city"})
  if err != nil {
    fmt.Println("Error writing CSV:", err)
    return
  }
  writer.Flush()

  fmt.Println(buf.String())
}

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

go"name,age,city\n"

Пример

Давайте запишем несколько строк CSV-данных с использованием различных разделителей:

gopackage main

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

func main() {
  var buf bytes.Buffer
  writer := csv.NewWriter(&buf)
  writer.Comma = ';'

  records := [][]string{
    {"name", "age", "city"},
    {"alice", "30", "new york"},
    {"bob", "25", "london"},
  }

  err := writer.WriteAll(records)
  if err != nil {
    fmt.Println("Error writing CSV:", err)
    return
  }

  fmt.Println(buf.String())
}

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

go"name;age;city\nalice;30;new york\nbob;25;london\n"

Пример

Давайте используем csv.NewWriter для записи в файл с настройкой параметров записи:

gopackage main

import (
  "encoding/csv"
  "os"
)

func main() {
  file, err := os.Create("data.csv")
  if err != nil {
    panic(err)
  }
  defer file.Close()

  writer := csv.NewWriter(file)
  writer.Comma = ','
  writer.UseCRLF = true

  records := [][]string{
    {"id", "product", "price"},
    {"1", "laptop", "1000"},
    {"2", "mouse", "25"},
  }

  writer.WriteAll(records)
  writer.Flush()
}

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

  • функцию csv.NewReader,
    которая создает новый объект для чтения CSV-данных
  • функцию csv.Writer.Write,
    которая записывает одну запись CSV
  • функцию csv.Writer.WriteAll,
    которая записывает все записи CSV
  • функцию csv.Writer.Flush,
    которая записывает данные в буфер