我想從 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 關注
- 230 瀏覽
添加回答
舉報
0/150
提交
取消