无法在Go中读取大于1024个字符的输入

时间:2017-07-13 15:07:17

标签: go

我正在使用fmt.Scanf来读取Golang中的字符串输入。但是当我们传入大输入(> 1024个字符)时,命令会停止。我正在使用Go版go1.8.3 darwin/amd64

这是代码

package main

import "fmt"

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

以下是https://pastebin.com/raw/fJ4QAZUZ

失败的有效负载

Go似乎在该有效负载中输入Jy,标记1024个字符。 1024是限制还是什么?

PS - 我已经在该链接上篡改了编码的cookie,所以不用担心。

1 个答案:

答案 0 :(得分: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)。