[go] encoding/csv 패키지의 사용법

go 언어에서 CSV(comma-separated values) 파일을 다루기 위해 기본 패키지 중 하나는 encoding/csv이다. 이 패키지는 CSV 형식의 데이터를 읽고 쓸 수 있는 함수와 구조체를 제공한다.

CSV 파일 읽기

CSV 파일을 읽기 위해서는 Read 또는 ReadAll 메서드를 사용한다.

Read 메서드

package main

import (
	"encoding/csv"
	"fmt"
	"os"
)

func main() {
	file, err := os.Open("data.csv")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	defer file.Close()

	reader := csv.NewReader(file)
	for {
		record, err := reader.Read()
		if err != nil {
			break
		}
		fmt.Println(record)
	}
}

ReadAll 메서드

package main

import (
	"encoding/csv"
	"fmt"
	"os"
)

func main() {
	file, err := os.Open("data.csv")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	defer file.Close()

	reader := csv.NewReader(file)
	records, err := reader.ReadAll()
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	fmt.Println(records)
}

CSV 파일 쓰기

CSV 파일을 쓰기 위해서는 Write 메서드를 사용한다.

package main

import (
	"encoding/csv"
	"os"
)

func main() {
	file, err := os.Create("output.csv")
	if err != nil {
		panic(err)
	}
	defer file.Close()

	writer := csv.NewWriter(file)
	defer writer.Flush()

	data := [][]string{
		{"Name", "Age", "City"},
		{"Alice", "25", "New York"},
		{"Bob", "30", "San Francisco"},
		{"Carol", "28", "Seattle"},
	}

	for _, record := range data {
		err := writer.Write(record)
		if err != nil {
			panic(err)
		}
	}
}

encoding/csv 패키지를 사용하면 편리하게 CSV 파일을 읽고 쓸 수 있다.

더 많은 정보를 원하시면 공식 문서를 참고하세요.