我想从os.Stdin读取一段长文本,但无法实现。已经阅读了关于这个主题的所有内容,并尝试了可以正常工作的代码。每种方法都会在4096个字符后截断,不论如何。
例如:此处是一个可行的示例。在循环第一次运行后,它会读取前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分享的链接,得到以下信息:我的输入只有一行,包含用空格分隔的整数。当我将空格改为换行符时,它可以工作。但由于hackerrate上的练习格式使用长的以空格分隔的行,所以问题仍然存在,需要进行改进。