Как создать CSV в кодировке Windows 1251 с Golang?

Для создания CSV файла в кодировке Windows 1251 с помощью языка программирования Go, мы можем воспользоваться пакетом encoding/csv и пакетом golang.org/x/text/encoding/charmap.

Первым шагом, нужно добавить зависимости в ваш проект, используя go mod. Выполните следующую команду в терминале:

go mod init example.com/csv-example

Затем, создайте файл main.go и импортируйте необходимые пакеты:

package main

import (
	"encoding/csv"
	"log"
	"os"
	"unicode/utf8"

	"golang.org/x/text/encoding/charmap"
	"golang.org/x/text/transform"
)

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

func writeCSV(filename string, data [][]string) error {
	file, err := os.Create(filename)
	if err != nil {
		return err
	}
	defer file.Close()

	// Создаем новый Writer с помощью файла и кодировки Windows 1251
	writer := csv.NewWriter(transform.NewWriter(file, charmap.Windows1251.NewEncoder()))

	// Записываем данные в CSV файл
	err = writer.WriteAll(data)
	if err != nil {
		return err
	}

	writer.Flush()
	if err := writer.Error(); err != nil {
		return err
	}

	return nil
}

В этой функции, мы сначала создаем файл с указанным именем. Затем, мы создаем новый Writer с помощью кодировки Windows 1251, используя функцию transform.NewWriter из пакета golang.org/x/text/transform. Далее, мы записываем данные в CSV файл с помощью метода WriteAll у экземпляра Writer. Наконец, мы вызываем методы Flush и Error для закрытия Writer и обработки ошибок, если они возникли.

Теперь, чтобы использовать эту функцию, вам нужно создать набор данных, который вы хотите записать в CSV файл, и вызвать функцию writeCSV с именем файла и этими данными:

func main() {
	data := [][]string{
		{"Name", "Age", "Email"},
		{"John", "30", "[email protected]"},
		{"Alice", "25", "[email protected]"},
		{"Bob", "35", "[email protected]"},
	}

	err := writeCSV("output.csv", data)
	if err != nil {
		log.Fatal(err)
	}
}

Теперь, при запуске этого кода, будет создан файл output.csv в кодировке Windows 1251, который будет содержать данные, указанные в переменной data.

Обратите внимание, что необходимо указать правильный путь к файлу и убедиться, что пакеты encoding/csv и golang.org/x/text/encoding/charmap установлены в вашем проекте.

Это всё, что вам нужно для создания CSV файла в кодировке Windows 1251 с помощью языка программирования Go.