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


相关推荐
乂爻yiyao31 分钟前
Spring Boot Fat JAR 容器化指南
spring boot·后端·jar
@PHARAOH3 小时前
HOW - Kratos 入门实践(二)- 概念学习
前端·微服务·go
Nan_Shu_6147 小时前
学习: 尚硅谷Java项目之小谷充电宝(3)
java·后端·学习
智能工业品检测-奇妙智能8 小时前
AIFlowy如何实现与现有Spring Boot项目的无缝集成?
java·spring boot·后端
Ama_tor8 小时前
Flask零基础进阶(中)
后端·python·flask
人道领域8 小时前
苍穹外卖:菜品新增功能全流程解析
数据库·后端·状态模式
野犬寒鸦8 小时前
TCP协议核心:TCP详细图解及TCP与UDP核心区别对比(附实战解析)
服务器·网络·数据库·后端·面试
毕设源码-朱学姐8 小时前
【开题答辩全过程】以 基于springBoot微服务架构的老年人社交系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
ejinxian8 小时前
Go语言完整学习规划(2026版)- Part 1
学习·go
csdn_aspnet8 小时前
Asp.Net Core 10.0 中的 Blazor 增强功能
前端·后端·asp.net·blazor·.net10