go - 这是Go中的编译器技巧吗?

标签 go

Go语言(https://github.com/golang/go/blob/master/src/io/ioutil/ioutil.go#L18-L38)中有一个功能。具体来说,这个分​​支对我来说似乎是多余的:

if int64(int(capacity)) == capacity {
    buf.Grow(int(capacity))
}
capacity从未修改过,该函数似乎不是递归的。这是骗人的编译器吗?

最佳答案

io.ReadAll的Capacity参数的类型为int64*bytes.BufferGrow的参数为int。因此,我们必须将输入的int64缩小为(也许)32位。结果可能与原始int64值不同。如果不是,我们将跳过该调用(尽管我可能会争辩说我们应该尝试将缓冲区增大到最大int值,或者(可能更好)只是直接返回错误)。

关于go - 这是Go中的编译器技巧吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59276302/

相关文章:

javascript - 在js中设置cookie,无法在golang中读取

go - 不能使用函数(类型 func())作为参数类型

go - 如何将 POST 正文中的参数解析为 map[string] 字符串?

GORM : cannot INSERT into generated column

go - 如何比较 Go 错误

go - 在 ubuntu 14.04 上为 golang 安装 protobuf 时出现问题

go - 用反射调用struct方法

http - 服务器的 Golang 自定义处理程序

http - golang http.Post 请求返回响应 404

go - 使用来自其父级的方法更改嵌入式结构的属性