登录
首页 >  Golang >  Go问答

如何读取特定的文件行?

来源:Golang技术栈

时间:2023-04-12 14:37:50 313浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《如何读取特定的文件行?》,就很适合你!文章讲解的知识点主要包括golang,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我需要阅读特定的文件行。我读过的一些相关主题:[golang:如何有效地确定文件中的行数?](https://stackoverflow.com/questions/24562942/golang- how-do-i-determine-the-number-of-lines-in-a-file-efficiently), [https://stackoverflow.com/questions/30692567/what-is-the-best-way-to-count- lines-in-file](https://stackoverflow.com/questions/30692567/what-is-the-best- way-to-count-lines-in-file)

我编写了以下函数,它按预期工作,但我有疑问:可能有更好(有效)的方法吗?

func ReadLine(r io.Reader, lineNum int) (line string, lastLine int, err error) {
    sc := bufio.NewScanner(r)
    for sc.Scan() {
        lastLine++
        if lastLine == lineNum {
            return sc.Text(), lastLine, sc.Err()
        }
    }
    return line, lastLine, io.EOF
}

正确答案

两个人说我的代码是实际的解决方案。所以我把它贴在这里。感谢@orcaman 提供更多建议。

import (
    "bufio"
    "io"
)

func ReadLine(r io.Reader, lineNum int) (line string, lastLine int, err error) {
    sc := bufio.NewScanner(r)
    for sc.Scan() {
        lastLine++
        if lastLine == lineNum {
            // you can return sc.Bytes() if you need output in []bytes
            return sc.Text(), lastLine, sc.Err()
        }
    }
    return line, lastLine, io.EOF
}

文中关于golang的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何读取特定的文件行?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>