Метод csv.Writer.Write

Метод csv.Writer.Write записывает одну строку в формате CSV в выходной поток. В качестве параметра он принимает срез строк []string, представляющий собой поля одной записи. Метод добавляет необходимые разделители и кавычки в соответствии со стандартами формата CSV, после чего записывает данные во внутренний буфер. Для гарантированной записи всех данных в выходной поток необходимо вызвать метод Flush. В случае ошибки записи метод возвращает её, и дальнейшие операции с писателем становятся некорректными.

Синтаксис

goerr := writer.Write(record []string)

Пример

Давайте запишем простую строку с тремя полями в CSV-файл:

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)
  record := []string{"John", "30", "New York"}
  err = writer.Write(record)
  if err != nil {
    panic(err)
  }

  writer.Flush()
}

Пример

Давайте запишем несколько строк в CSV-файл, используя метод Write в цикле:

gopackage main

import (
  "encoding/csv"
  "os"
)

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

  writer := csv.NewWriter(file)

  records := [][]string{
    {"Name", "Age", "City"},
    {"Alice", "25", "London"},
    {"Bob", "32", "Paris"},
    {"Charlie", "28", "Berlin"},
  }

  for _, record := range records {
    err := writer.Write(record)
    if err != nil {
      panic(err)
    }
  }

  writer.Flush()
}

Пример

Давайте запишем строку, содержащую запятые и кавычки в полях. Метод Write автоматически экранирует такие символы в соответствии со стандартом CSV:

gopackage main

import (
  "encoding/csv"
  "os"
)

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

  writer := csv.NewWriter(file)

  record := []string{"Smith, John", `He said "Hello"`, "123"}
  err = writer.Write(record)
  if err != nil {
    panic(err)
  }

  writer.Flush()
}

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

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