gpt4 book ai didi

io - 程序只打印输入文件的最后一个字符串

转载 作者:数据小太阳 更新时间:2023-10-29 03:17:49 32 4
gpt4 key购买 nike

我正在尝试创建一个简单的程序来从文本文件中读取行并将它们打印到 golang 中的控制台。我花了很多时间检查我的代码,但我根本无法理解为什么只有最后一行被打印到屏幕上。谁能告诉我我哪里出错了?这里的一切都应该编译并运行。

package main

import (
"bufio"
"fmt"
"os"
)

func Readln(r *bufio.Reader) (string, error) {
var (
isPrefix bool = true
err error = nil
line, ln []byte
)
for isPrefix && err == nil {
line, isPrefix, err = r.ReadLine()
ln = append(ln, line...)
}
return string(ln), err
}

func main() {
f, err := os.Open("tickers.txt")
if err != nil {
fmt.Printf("error opening file: %v\n", err)
os.Exit(1)
}
r := bufio.NewReader(f)
s, e := Readln(r)
for e == nil {
fmt.Println(s)
s, e = Readln(r)
}
}

最佳答案

因此我怀疑问题出在您的 tickers.txt 文件行尾。 ReadLine() 的文档还指出,对于大多数情况,扫描仪更合适。

以下 SO 问题提供了一些替代实现的有用信息:reading file line by line in go

然后我使用上述问题中的示例重新实现了您的主要功能,如下所示:

f, err := os.Open("tickers.txt")
if err != nil {
fmt.Printf("error opening file: %v\n", err)
os.Exit(1)
}

scanner := bufio.NewScanner(f)
for scanner.Scan() {
fmt.Println(scanner.Text())
}

if err := scanner.Err(); err != nil {
fmt.Println(err)
}

关于io - 程序只打印输入文件的最后一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18862033/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com