我通过做一些Project Euler问题来学习Go编程语言。我现在在[问题13](http://projecteuler.net/problem=13)上。它包含一个带有100行50位数字的外部文件。我的问题是:如何将该文件读入Go程序并使用它?Go有阅读线功能吗?我已经阅读了有关io和ioutil软件包的信息,而我所能想到的就是读取文件并进行打印。但是,我不确定如何使用该文件...可以将其分配给变量吗?是否有readlines功能等?任何帮助将不胜感激。这是我到目前为止的内容:package mainimport "fmt"import "io/ioutil"func main() { fmt.Println(ioutil.ReadFile("one-hundred_50.txt"))}
3 回答
慕容森
TA贡献1853条经验 获得超18个赞
有多种方法可以逐行读取文件,但是ioutil.ReadFile确实是一个不错的开始。当然,您可以将其分配给变量。查看ReadFile的函数签名,看看它如何返回字节片和错误。分配两个;检查错误是否为nil。如果错误不是nil,则打印错误,这样您就可以看到问题所在。然后,一旦将字节包含在变量中,请尝试逐行将其吐出。尝试使用bytes.Split,或更简单的方法是将其转换为字符串,然后使用strings.Split。
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
自从提出并回答了这个问题以来,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
}
}
- 3 回答
- 0 关注
- 268 浏览
添加回答
举报
0/150
提交
取消