加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang从stdin阅读长文本

发布时间:2020-12-16 09:23:22 所属栏目:大数据 来源:网络整理
导读:我想从os.Stdin中读取一篇长篇文章,但我无法实现.已经阅读了主题中的所有内容,尝试了可行的代码.无论怎样,每个方法都会减少4096个字符. 例如. here是一个有效的例子.在第一次循环运行之后,它会读取前4096个字符,然后等待每次输入的更多处理,直到我用EOF结束
我想从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共享的链接,我得到了以下内容:我的输入只有一行包含空格分隔的整数.当我将空格更改为换行符时,它起作用了.但是由于黑客的练习格式使用长空格分隔线,问题仍然存在,并且有一个改进.

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读