GoにはCSVファイルの読み書きのためのパッケージが組み込まれています。この記事では、GoLangでCSVファイルを扱う方法を詳しく解説します。
CSVとは
CSVとは、Comma Separated Valuesの略で、カンマで区切られたデータです。
現在では最もよく使われているエンコーディングの一つです。
そしてGolangには CSV データを処理するための encoding/csv パッケージがあります。
encoding/csvパッケージのインポート
GolangでCSVを使うには、以下のようにencoding/csvパッケージをインポートする必要があります。
import "encoding/csv"
また、外出先でファイルを開いたり作成したりするのに役立つosパッケージもインポートする予定です。
import "os"
GoLangでCSVファイルを読む方法
では、CSVファイルの読み込みに挑戦してみましょう。そのためには、まずosパッケージを使って開く必要があります。
そして、そのファイルからCSVリーダーを作り、その内容を読みます。
以下は、GoでCSVファイルを読み込むためのコードです。
package main
import (
"encoding/csv"
"fmt"
"os"
)
func main() {
file, err := os.Open("test.csv")
if err != nil {
fmt.Println(err)
}
reader := csv.NewReader(file)
records, _ := reader.ReadAll()
fmt.Println(records)
}
ご覧のように、リーダーはあらかじめ定義されたCSVファイルを読み込んで、コンソールにデータを出力します。
GoLangでCSVファイルに書き込みをする
ファイルを読み込むのと同じ方法で、CSVファイルを書き込むことができるようになります。
まず、osパッケージを使って書き込み用のファイルを作成します。
package main
import (
"encoding/csv"
"fmt"
"os"
)
func main() {
f, e := os.Create("./People.csv")
if e != nil {
fmt.Println(e)
}
writer := csv.NewWriter(f)
var data = [][]string{
{"Name", "Age", "Occupation"},
{"Sally", "22", "Nurse"},
{"Joe", "43", "Sportsman"},
{"Louis", "39", "Author"},
}
e = writer.WriteAll(data)
if e != nil {
fmt.Println(e)
}
}
上記のコードでは、文字列のスライスをデータとして取得し、取得したWriterを用いてCSVファイルに書き込んでいます。