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

标签 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 似乎在标记 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/

相关文章:

mongodb - 如何在mgo中进行文本搜索?

go - 存储 slice 的接口(interface){}上的范围

go - path.Join 的可移植性用于 URL 路径

http - 在 Google App Engine 上对封闭主体的读取无效

database - 在 Go 中关闭数据库连接的更好/更短的方法

ruby - 是否存在任何 BoltDB Ruby gem 绑定(bind)?

使用用户定义的键映射用户定义的相等性?

json - 我如何从golang中的json中获取特定值

go - 按名称设置 protobuf 属性

go - 无法在现有服务器上使用 go tool pprof