Функция csv.NewWriter
Функция csv.NewWriter создает новый писатель CSV,
который записывает данные в формате CSV в переданный
объект io.Writer. В качестве первого параметра
функция принимает объект, реализующий интерфейс
io.Writer, куда будут записываться данные в формате CSV.
Функция возвращает указатель на объект csv.Writer,
который можно использовать для записи CSV-данных.
Синтаксис
csv.NewWriter(w io.Writer) *csv.Writer
Пример
Давайте создадим писатель CSV, который записывает данные
в буфер bytes.Buffer:
package 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())
}
Результат выполнения кода:
"name,age,city\n"
Пример
Давайте запишем несколько строк CSV-данных с использованием различных разделителей:
package 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())
}
Результат выполнения кода:
"name;age;city\nalice;30;new york\nbob;25;london\n"
Пример
Давайте используем csv.NewWriter для записи в файл
с настройкой параметров записи:
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)
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,
которая записывает данные в буфер