Go写CSV需用encoding/csv与os.File,构造二维字符串切片,os.Create建文件后csv.NewWriter包装,Write写入表头和记录,自动处理引号转义,Flush确保写入磁盘,Close释放资源,可选加UTF-8 BOM兼容Windows Excel。
用 Go 语言写入 CSV 文件很简单,关键是用标准库 encoding/csv 配合 os.File,注意字段分隔、引号转义和换行处理即可生成规范的 CSV 表格数据。
先构造要写入的数据(通常为二维字符串切片),再用 os.Create 创建文件,接着用 csv.NewWriter 包装它。记得在结束前调用 w.Flush() 确保缓冲区内容真正写入磁盘。
[]string,例如 []string{"张三", "25", "北京"}
.csv 后缀,路径需有写入权限调用 w.Write() 一次写一行。表头和数据行都用相同方式写入,顺序决定列位置。如果某字段含逗号、换行符或双引号,csv.Writer 会自动用双引号包裹并转义内部引号(如 "a""b")。
w.Write([]string{"姓名", "年龄", "城市"})
w.Write([]string{"李四", "30", "上海"})
"abc,def" 或 "hello\nworld" 都能正确编码
每次 w.Write() 和最终的 w.Flush() 都应检查错误。文件句柄需用 defer f.Close() 及时释放,避免资源泄漏。常见错误包括磁盘满、无权限、路径不存在等。
if err := w.Write(record); err != nil { log.Fatal(err) }
Flush() 必须调用,否则最后一部分数据可能丢失defer f.Close() 在 panic 时保证关闭——先 Close() 再 Flush() 更稳妥Go 默认生成 UTF-8 文件,Excel(Windows 版)打开时可能乱码,解决方法是在文件开头写入 UTF-8 BOM(\xEF\xBB\xBF)。只需在创建文件后、创建 writer 前,用 f.Write() 写入三个字节即可。
f.Write([]byte("\xEF\xBB\xBF"))
gob 或其他编码,CSV 就是纯文本,保持简单