CSV是一种流行的数据格式,被Excel、Google Sheets和其他电子表格应用程序用来保存和加载表格数据。在这种格式中,行与行之间用换行符隔开,行中的每个单元格用逗号隔开(或TSV格式中的制表符)。Go对写和读CSV文件有很好的内置支持。看看写一个简单的 CSV 文件是多么容易。
package main
import (
"encoding/csv"
"log"
"os"
)
func main() {
data := [][]string{
{"vegetables", "fruits"},
{"carrot", "banana"},
{"potato", "strawberry"},
}
// create a file
file, err := os.Create("result.csv")
if err != nil {
log.Fatal(err)
}
defer file.Close()
// initialize csv writer
writer := csv.NewWriter(file)
defer writer.Flush()
// write all rows at once
writer.WriteAll(data)
// write single row
extraData := []string{"lettuce", "raspberry"}
writer.Write(extraData)
}
在第一步,你需要创建一个可以保存CSV数据的文件。你可以用 Create函数来完成。 os包中的函数来完成。请确保在数据完成后调用 file.Close()在数据写入后关闭文件。
然后,我们初始化 csv.Writer包中的 encoding/csv包初始化,它允许我们以CSV格式写入数据。这是一个缓冲写入器,所以我们应该在写入结束时调用 writer.Flush()以确保所有的数据都被保存到文件中。
CSV写入器有两种方法来保存数据行。我们可以使用 writer.WriteAll()方法,当我们在写的时候知道所有的数据,或者使用 writer.Write()来逐行写入数据。
写入一个TSV文件
的标准分隔符是 csv.Writer的标准分隔符是一个逗号,但你可以通过用其他字符替换逗号符来轻松改变它。
writer.Comma = '\t'
这样,我们的写作者使用TSV(tab-separated values)编码,这也是一种常用的表格数据格式。