我正在使用 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 似乎在标记 1024 个字符的有效载荷中接受输入直到 Jy
。那么 1024 是一个限制还是什么?
PS - 我已经在那个链接上篡改了编码的 cookie,所以不用担心。
最佳答案
这不是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)。
关于go - 无法在 Go 中读取大于 1024 个字符的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45084622/