首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go1.24 - 按行读取文件(迭代器模式)

Go1.24 - 按行读取文件(迭代器模式)

作者头像
老麦
发布2025-05-23 12:52:57
发布2025-05-23 12:52:57
7800
代码可运行
举报
文章被收录于专栏:Go与云原生Go与云原生
运行总次数:0
代码可运行

大家好, 我是 老麦, 一个运维老兵, 现在专注于 Golang,DevOps,云原生基础设施建设。

Go1.24 - 按行读取文件(迭代器模式)

建议点击 查看原文 查看最新内容。

原文链接: https://typonotes.com/posts/2025/05/16/read-file-line-by-line-go124/

image
image

image

在 go 1.24 中新增加了两个标准方法 - strings.Lines()bytes.Lines()

  1. 都使用 分隔符\n 拆分对象。
  2. 都返回一个 Seq 的迭代对象。

Seq 迭代对象

Seq 迭代对象可以接受一个 回调函数使用 for 循环 进行遍历。

使用 回调函数 时, 可以通过 return false 提前终止遍历。

代码语言:javascript
代码运行次数:0
运行
复制
// ... omit
// 读取文件内容
seq := bytes.Lines(b)

func callback(line []byte) bool {
    if bytes.HasPrefix(line, []byte("//")) {
        // 提前结束
        returnfalse
    }


    println(string(line))
    returntrue
}

seq(callback)

使用 for 循环 遍历需要注意是

  1. 只有一个迭代变量。
  2. 迭代变量是 value 而非 slice index 或 map key。 类似 for _, line := range slice/map
代码语言:javascript
代码运行次数:0
运行
复制
for line := range seq {
    if bytes.HasPrefix(line, []byte("//")) {
        continue
    }
    println(string(line))
}

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 熊猫云原生Go 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Go1.24 - 按行读取文件(迭代器模式)
    • Seq 迭代对象
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档