Go语言实战案例-读取CSV文件并打印

🎯 案例目标

掌握如何使用 Go 语言读取 CSV 文件,并将内容逐行打印到终端。

CSV(Comma-Separated Values)是一种常见的轻量级数据交换格式,本案例帮助你学习如何使用标准库 encoding/csv 来处理 CSV 文件。


🧩 应用场景

  • • 读取用户上传的数据表格
  • • 分析日志、导入信息
  • • 处理 Excel 导出的数据(保存为 .csv)

🧠 涉及知识点

  • • 使用 os.Open() 打开文件
  • • 使用 csv.NewReader() 读取文件内容
  • • 使用 for 循环遍历每一行
  • • 错误处理和资源释放

📄 示例CSV文件:data.csv

复制代码
姓名,身份证号,年龄
张三,123456789012345678,30
李四,234567890123456789,28
王五,345678901234567890,35

💻 示例代码

go 复制代码
package main

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

func main() {
    // 打开CSV文件
    file, err := os.Open("data.csv")
    if err != nil {
        fmt.Println("打开文件失败:", err)
        return
    }
    defer file.Close()

    // 创建CSV读取器
    reader := csv.NewReader(file)

    // 读取所有内容(可选择一行一行读)
    records, err := reader.ReadAll()
    if err != nil {
        fmt.Println("读取CSV内容失败:", err)
        return
    }

    // 打印CSV内容
    fmt.Println("CSV文件内容如下:")
    for i, row := range records {
        fmt.Printf("第 %d 行: %v\n", i+1, row)
    }
}

🧪 运行结果示例

ini 复制代码
CSV文件内容如下:
第 1 行: [姓名 身份证号 年龄]
第 2 行: [张三 123456789012345678 30]
第 3 行: [李四 234567890123456789 28]
第 4 行: [王五 345678901234567890 35]

🛠 技术说明

  • encoding/csv 是 Go 标准库中的 CSV 解析器,提供快速可靠的读写支持
  • reader.ReadAll() 会一次性读取全部内容,适合小文件(几千行以内)
  • • 若处理大型文件,建议使用 reader.Read() 逐行读取

📌 拓展练习

  • • 逐行读取,并仅打印姓名和年龄
  • • 添加错误检查,跳过非法行
  • • 支持 UTF-8 with BOM 格式的 CSV
  • • 将数据存入结构体切片并操作

✅ 小结

本案例教会了你如何使用 Go 语言读取 CSV 文件并打印内容。掌握这种处理方式,将为你今后进行批量数据导入、清洗、分析打下基础。


相关推荐
小飞Coding7 分钟前
MyBatis Mapper 实现原理彻底解密——从动态代理到 JDBC 执行全链路剖析
后端·mybatis
Mr.456717 分钟前
Spring Boot 集成 PostgreSQL 表级备份与恢复实战
java·spring boot·后端·postgresql
LucianaiB18 分钟前
王炸组合!腾讯云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!
后端
白露与泡影22 分钟前
探索springboot程序打包docker的最佳方式
spring boot·后端·docker
开心就好202523 分钟前
本地执行 IPA 混淆 无需上传致云端且不修改工程的方案
后端·ios
架构师沉默37 分钟前
为什么一个视频能让全国人民同时秒开?
java·后端·架构
掘金码甲哥1 小时前
同样都是九年义务教育,他知道的AI算力科普好像比我多耶
后端
sthnyph1 小时前
SpringBoot Test详解
spring boot·后端·log4j
饼干哥哥2 小时前
搭建一个云端Skills系统,随时随地记录TikTok爆款
前端·后端
IT 行者2 小时前
LangChain4j 集成 Redis 向量存储:我踩过的坑和选型建议
java·人工智能·redis·后端