我想从 os.Stdin 阅读长文本,但我做不到。已经阅读了该主题的所有内容,尝试了应该可以工作的代码。无论如何,每种方法都会在 4096 个字符后剪切。例如。这是一个工作示例。在循环第一次运行后,它读取前 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的练习格式使用了很长的空格分隔的行,所以问题仍然存在,需要改进。
1 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
感谢 Ian Lance Taylor,我能够解决这个问题: https ://groups.google.com/forum/#!topic/golang-nuts/ndh-1wdsWYs
所以 4096 个字符是我系统通过 N_TTY_BUF_SIZE 内核参数的限制。同样的事情也适用于 cat 和 Python。
无论如何,在hackerrank.com 上,我能够用Python 解决相同的练习,所以我猜他们对Go 的配置有误,我已经让他们找出来了。
- 1 回答
- 0 关注
- 182 浏览
添加回答
举报
0/150
提交
取消