golang从stdin

时间:2016-08-23 22:17:23

标签: go stdin longtext

我想阅读os.Stdin中的长篇文章,但我无法实现。已经阅读了主题中的所有内容,尝试了可行的代码。无论如何,每个方法都会减少4096个字符。

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

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

请帮忙!

修改

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

1 个答案:

答案 0 :(得分:1)

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

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

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