Метод csv.Writer.Write
Метод csv.Writer.Write записывает одну строку в формате CSV в выходной поток.
В качестве параметра он принимает срез строк []string, представляющий собой поля одной записи.
Метод добавляет необходимые разделители и кавычки в соответствии со стандартами формата CSV,
после чего записывает данные во внутренний буфер. Для гарантированной записи всех данных
в выходной поток необходимо вызвать метод Flush.
В случае ошибки записи метод возвращает её, и дальнейшие операции с писателем становятся некорректными.
Синтаксис
err := writer.Write(record []string)
Пример
Давайте запишем простую строку с тремя полями в CSV-файл:
package 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 в цикле:
package 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:
package 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-писателя