gpt4 book ai didi

golang 从 stdin 读取长文本

转载 作者:IT王子 更新时间:2023-10-29 00:47:19 25 4
gpt4 key购买 nike

我想从 os.Stdin 读取一段很长的文本,但我做不到。已经阅读了主题中的所有内容,尝试了应该有效的代码。无论如何,每个方法都会在 4096 个字符之后剪切。

例如。 here是一个工作示例。第一次运行循环后,它读取前 4096 个字符,然后等待每次输入的更多处理,直到我用 EOF (Ctrl+D) 结束它。 fmt.Scan、bufio.NewScanner、bufio ReadLine、ioutil.ReadAll 也是如此。如果我将它保存到一个文件中并读取它,它会按预期工作。从标准输入它没有。

我在 Arch Linux 上,32 位,Go 1.7,在 mate-terminal 1.14,tty 8.25 中测试,两者都一样。同样的事情发生在 hackerrank.com 页面上,我不知道他们使用的是什么技术。

请帮忙!

编辑:

我的输入仅比 4096 个字符长一点点。我查看了 Amd 的链接共享,我得到以下信息:我的输入只有一行包含空格分隔的整数。当我将空格更改为换行符时,它起作用了。但是由于hackerrate上的练习格式使用了长空格分隔的行,所以问题仍然存在,并进行了细化。

最佳答案

多亏了 Ian Lance Taylor,我才能够解决这个问题: https://groups.google.com/forum/#!topic/golang-nuts/ndh-1wdsWYs

所以 4096 个字符是我的系统通过 N_TTY_BUF_SIZE 内核参数的限制。同样的事情也适用于 cat 和 Python。

无论如何,在 hackerrank.com 上我能够用 Python 解决相同的练习,所以我猜他们对 Go 的配置有误,我已经让他们找出来了。

关于golang 从 stdin 读取长文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39111541/

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