@theron
В Go есть встроенный пакет encoding/csv
, который предоставляет возможность чтения и записи CSV файлов.
Чтение CSV файла в Go можно выполнить следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import ( "encoding/csv" "fmt" "os" ) func main() { // Открыть файл CSV file, err := os.Open("file.csv") if err != nil { panic(err) } defer file.Close() // Создать новый ридер CSV reader := csv.NewReader(file) // Читать строки из файла for { record, err := reader.Read() if err == io.EOF { break } if err != nil { panic(err) } // Обработка строки fmt.Println(record) } } |
Здесь мы сначала открываем файл с помощью os.Open
, затем создаем новый csv.Reader
, который может читать строки из файла. Затем мы читаем строки из файла по одной в цикле, используя reader.Read()
, пока не достигнем конца файла.
Каждая строка CSV файла представляется как массив строк ([]string
), который мы можем обрабатывать, например, выводить на экран или сохранять в базу данных.
Запись CSV файла в Go можно выполнить следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import ( "encoding/csv" "os" ) func main() { // Создать новый файл CSV file, err := os.Create("new_file.csv") if err != nil { panic(err) } defer file.Close() // Создать новый писатель CSV writer := csv.NewWriter(file) defer writer.Flush() // Записать строки в файл writer.Write([]string{"Заголовок 1", "Заголовок 2", "Заголовок 3"}) writer.Write([]string{"Строка 1, столбец 1", "Строка 1, столбец 2", "Строка 1, столбец 3"}) writer.Write([]string{"Строка 2, столбец 1", "Строка 2, столбец 2", "Строка 2, столбец 3"}) } |
Здесь мы создаем новый файл CSV с помощью os.Create
, затем создаем новый csv.Writer
, который может записывать строки в файл. Затем мы записываем строки в файл по одной с помощью writer.Write()
. Обратите внимание, что мы вызываем writer.Flush()
в конце записи, чтобы убедиться, что все записи записались в файл.