使用Go编程语言读取和使用外部文件

我通过做一些Project Euler问题来学习Go编程语言。我现在在[问题13](http://projecteuler.net/problem=13)上。它包含一个带有100行50位数字的外部文件。我的问题是:如何将该文件读入Go程序并使用它?Go有阅读线功能吗?我已经阅读了有关io和ioutil软件包的信息,而我所能想到的就是读取文件并进行打印。但是,我不确定如何使用该文件...可以将其分配给变量吗?是否有readlines功能等?


任何帮助将不胜感激。


这是我到目前为止的内容:


package main


import "fmt"

import "io/ioutil"


func main() {

        fmt.Println(ioutil.ReadFile("one-hundred_50.txt"))

}


温温酱
浏览 269回答 3
3回答

慕容森

有多种方法可以逐行读取文件,但是ioutil.ReadFile确实是一个不错的开始。当然,您可以将其分配给变量。查看ReadFile的函数签名,看看它如何返回字节片和错误。分配两个;检查错误是否为nil。如果错误不是nil,则打印错误,这样您就可以看到问题所在。然后,一旦将字节包含在变量中,请尝试逐行将其吐出。尝试使用bytes.Split,或更简单的方法是将其转换为字符串,然后使用strings.Split。

慕尼黑的夜晚无繁华

自从提出并回答了这个问题以来,bufio软件包已更新(对于Go 1.1),也许现在有了更好的解决方案(并不是所有这些都不好)。bufio软件包中的Scanner类型使此操作非常容易:func main() {    f, e := os.Open("one-hundred_50.txt")    if e != nil {        // error opening file, handle it    }    s := bufio.NewScanner(f)    for s.Scan() {        // scanner.Text() contains the current line    }    if e = s.Err(); e != nil {        // error while scanning; no error at EOF    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go