全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何使用Golang处理CSV文件_Golang encoding CSV读写示例

Go语言通过encoding/csv标准库提供CSV读写支持:Read()逐行解析为字符串切片,Write()配合Flush()写入,支持自定义分隔符和UTF-8编码,结构体映射需手动对齐表头。

Go 语言通过标准库 encoding/csv 提供了简洁、高效的 CSV 文件读写支持,无需第三方依赖,适合处理结构化表格数据。

读取 CSV 文件(按行解析)

使用 csv.NewReader 从文件或任意 io.Reader 中逐行读取,返回字符串切片(每行一列)。

  • 打开文件后传入 os.File 创建 reader
  • 调用 Read() 一次读一行,返回 []string 和错误
  • 注意首行可能是表头,可单独读取后跳过

示例:

file, _ := os.Open("data.csv")
defer file.Close()
reader := csv.NewReader(file)
headers, _ := reader.Read() // 读表头
for {
  record, err := reader.Read()
  if err == io.EOF { break }
  if err != nil { log.Fatal(err) }
  fmt.Println(record) // 如 ["Alice", "28", "Beijing"]
}

写入 CSV 文件(按行输出)

csv.NewWriter 包装 io.Writer(如文件),调用 Write() 写入一行,最后别忘 Flush()

  • 每一行是 []string,自动处理含逗号、换行、引号的字段(内部转义)
  • WriteAll() 可一次性写多行,更简洁
  • 务必调用 w.Flush() 确保数据真正写入磁盘

示例:

file, _ := os.Create("output.csv")
defer file.Close()
w := csv.NewWriter(file)
defer w.Flush()
w.WriteAll([][]string{
  {"Name", "Age", "City"},
  {"Bob", "32", "Shanghai"},
  {"Cindy", "25", "Guangzhou"},
})

处理带标题的 CSV(结构体映射)

标准库不直接支持 struct tag 映射,但可手动结合表头做字段对齐,提升可读性与维护性。

  • Read() 获取 headers 切片
  • 构建字段名 → 索引映射(map[string]int
  • 后续每行用映射查下标,赋值给结构体字段

例如定义 type Person struct { Name, Age, City string },再根据 headerMap["Name"] 找到对应列位置。

注意编码与分隔符(非 UTF-8 或自定义分隔符)

encoding/csv 默认按 UTF-8 处理,且仅支持逗号分隔。若需其他分隔符(如制表符、分号),可设置 reader.Comma = '\t'w.Comma = ';'

  • 非 UTF-8 编码(如 GBK)需先用 golang.org/x/text/encoding 转换为 UTF-8 再交给 csv reader
  • 空行、多余空格、BOM 头可能引发解析错误,建议预处理或捕获 error 后跳过

基本上就这些。标准库够用、轻量、稳定,适合大多数 CSV 场景 —— 不复杂但容易忽略 Flush 和错误处理。


# go  # golang  # go语言  # 编码  # csv  # ai  # csv文件  # 标准库  # EOF  # String  # if  # for  # Error  # break  # 字符串  # 结构体  # int  # Struct 


相关文章: 建站之星如何助力网站排名飙升?揭秘高效技巧  如何通过VPS搭建网站快速盈利?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  Python多线程使用规范_线程安全解析【教程】  网站网页制作专业公司,怎样制作自己的网页?  西安大型网站制作公司,西安招聘网站最好的是哪个?  如何快速辨别茅台真假?关键步骤解析  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  微信推文制作网站有哪些,怎么做微信推文,急?  建站之星备案是否影响网站上线时间?  制作证书网站有哪些,全国城建培训中心证书查询官网?  长沙做网站要多少钱,长沙国安网络怎么样?  ,石家庄四十八中学官网?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  哈尔滨网站建设策划,哈尔滨电工证查询网站?  公众号网站制作网页,微信公众号怎么制作?  黑客入侵网站服务器的常见手法有哪些?  微信小程序 五星评分(包括半颗星评分)实例代码  如何通过FTP空间快速搭建安全高效网站?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  如何快速登录WAP自助建站平台?  如何快速搭建支持数据库操作的智能建站平台?  专业网站建设制作报价,网页设计制作要考什么证?  如何登录建站主机?访问步骤全解析  如何在IIS7上新建站点并设置安全权限?  如何解决VPS建站LNMP环境配置常见问题?  建站之星logo尺寸如何设置最合适?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  平台云上自主建站:模板化设计与智能工具打造高效网站  深入理解Android中的xmlns:tools属性  建站主机选哪家性价比最高?  内部网站制作流程,如何建立公司内部网站?  javascript基本数据类型及类型检测常用方法小结  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  制作门户网站的参考文献在哪,小说网站怎么建立?  php json中文编码为null的解决办法  ,交易猫的商品怎么发布到网站上去?  淘宝制作网站有哪些,淘宝网官网主页?  已有域名如何快速搭建专属网站?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  如何在Tomcat中配置并部署网站项目?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  建站ABC备案流程中有哪些关键注意事项?  如何通过万网虚拟主机快速搭建网站?  济南专业网站制作公司,济南信息工程学校怎么样? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。