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 文件并打印内容。掌握这种处理方式,将为你今后进行批量数据导入、清洗、分析打下基础。


相关推荐
一 乐11 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
码事漫谈12 小时前
Protocol Buffers 编码原理深度解析
后端
码事漫谈12 小时前
gRPC源码剖析:高性能RPC的实现原理与工程实践
后端
踏浪无痕14 小时前
AI 时代架构师如何有效成长?
人工智能·后端·架构
程序员小假14 小时前
我们来说一下无锁队列 Disruptor 的原理
java·后端
武子康15 小时前
大数据-209 深度理解逻辑回归(Logistic Regression)与梯度下降优化算法
大数据·后端·机器学习
maozexijr15 小时前
Rabbit MQ中@Exchange(durable = “true“) 和 @Queue(durable = “true“) 有什么区别
开发语言·后端·ruby
源码获取_wx:Fegn089516 小时前
基于 vue智慧养老院系统
开发语言·前端·javascript·vue.js·spring boot·后端·课程设计
独断万古他化16 小时前
【Spring 核心: IoC&DI】从原理到注解使用、注入方式全攻略
java·后端·spring·java-ee
毕设源码_郑学姐16 小时前
计算机毕业设计springboot基于HTML5的酒店预订管理系统 基于Spring Boot框架的HTML5酒店预订管理平台设计与实现 HTML5与Spring Boot技术驱动的酒店预订管理系统开
spring boot·后端·课程设计