2017-07-13 32 views
3

我正在使用fmt.Scanf來讀取Golang中的字符串輸入。但是,當我們傳入大量輸入(> 1024個字符)時,命令停止。我正在使用Go版本go1.8.3 darwin/amd64在Go中無法讀取大於1024個字符的輸入

下面是代碼

package main 

import "fmt" 

func main() { 
    var s string 
    fmt.Scanf("%s", &s) 
    fmt.Println(s) 
} 

這裏是一個失敗https://pastebin.com/raw/fJ4QAZUZ

轉到似乎需要輸入直到Jy在有效載荷,這標誌着1024多個字符的有效載荷。那麼1024是一個極限還是什麼?

PS - 我已經在該鏈接上篡改了編碼的cookie,所以不用擔心。

+0

似乎對我好嗎? https://play.golang.org/p/TaY_XLapeY –

+1

我不認爲遊樂場以正常運行的方式運行'Scanf'命令。我想它跳過了。這個例子只是將大文本分配給's'並打印出來,所以它是不同的。 – Avi

回答

6

這不是fmt包或fmt.Scanf()的限制,這個例子正常掃描速度比3KB更多:

// src is a looooong text (>3KB) 

var s string 
fmt.Println(len(src)) 
fmt.Sscanf(src, "%s", &s) 
fmt.Println(len(s)) 

嘗試它的Go Playground

這很可能是你的終端的限制。我也試過你的未修改版本,粘貼超過10KB的文本,結果是4096字節(Ubuntu linux 16.04,Bash)。

+0

謝謝@icza。這看起來是正確的答案。 – Avi