РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1166 of 1593 menu

Метод csv.Writer.WriteAll

Метод WriteAll записывает все записи из переданного слайса в CSV-формате. Он принимает один параметр - слайс слайсов строк [][]string, где каждая внутренняя запись представляет собой строку полей. Метод автоматически экранирует поля, содержащие специальные символы (запятые, кавычки, символы новой строки), и добавляет разделители между полями и строками.

Синтаксис

writer.WriteAll(records)

Пример

Давайте запишем простой набор записей в CSV-формате:

package main import ( "encoding/csv" "os" ) func main() { records := [][]string{ {"name", "age", "city"}, {"John", "30", "New York"}, {"Jane", "25", "London"}, } file, _ := os.Create("data.csv") defer file.Close() writer := csv.NewWriter(file) writer.WriteAll(records) }

В результате будет создан файл data.csv со следующим содержимым:

name,age,city John,30,New York Jane,25,London

Пример

Давайте запишем данные, содержащие специальные символы:

package main import ( "encoding/csv" "os" ) func main() { records := [][]string{ {"Name", "Description"}, {"Item 1", `This "product" is great`}, {"Item 2", "Line 1\nLine 2"}, } file, _ := os.Create("products.csv") defer file.Close() writer := csv.NewWriter(file) writer.WriteAll(records) }

Результат выполнения кода (содержимое файла):

Name,Description Item 1,"This ""product"" is great" Item 2,"Line 1 Line 2"

Обратите внимание, что поля с запятыми, кавычками или переносами строк автоматически обрамляются в двойные кавычки, а внутренние кавычки экранируются.

Пример

Давайте запишем данные с изменённым разделителем:

package main import ( "encoding/csv" "os" ) func main() { records := [][]string{ {"a", "b", "c"}, {"1", "2", "3"}, {"4", "5", "6"}, } file, _ := os.Create("data.tsv") defer file.Close() writer := csv.NewWriter(file) writer.Comma = '\t' writer.WriteAll(records) }

Результат выполнения кода (содержимое файла):

a b c 1 2 3 4 5 6

В этом примере мы изменили разделитель полей с запятой на табуляцию, установив свойство Comma в значение '\t'.

Пример

Давайте проверим обработку ошибок при записи:

package main import ( "encoding/csv" "fmt" "os" ) func main() { records := [][]string{ {"a", "b", "c"}, {"1", "2", "3"}, } file, _ := os.Create("output.csv") defer file.Close() writer := csv.NewWriter(file) err := writer.WriteAll(records) if err != nil { fmt.Printf("Error: %v\n", err) } }

Если операция записи завершилась успешно, программа не выведет сообщение об ошибке. В противном случае будет выведено описание возникшей проблемы.

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

  • метод csv.Writer.Write,
    который записывает одну запись в CSV-формате
  • метод csv.Writer.Flush,
    который принудительно записывает все буферизированные данные
  • метод csv.Reader.ReadAll,
    который читает все записи из CSV-формата
  • функцию csv.NewWriter,
    которая создаёт новый объект для записи CSV
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить