我在golangci-lint里抓到了Consider preallocating [to] (prealloc)个这个问题 我的代码是:

var to []string
for _, t := range s.To {
    to = append(to, t.String())
}

你有没有办法用皮棉来解决这个问题?

推荐答案

预先分配一个容量为append()的切片,以便减少(或没有)复制:

to := make([]string, 0, len(s.To))
for _, t := range s.To {
    to = append(to, t.String())
}

或者更好的做法是,不要使用append(),而是指定给各个切片元素:

to := make([]string, len(s.To))
for i, t := range s.To {
    to[i] = t.String()
}

Go相关问答推荐

区分Terminal和Hook Zerolog Go中的错误级别日志(log)输出

为什么在GO中打印变量会导致堆栈溢出?

如何复制*C.char?

golang 的通用 map 功能

../golang/pkg/mod/github.com/wmentor/lemmas@v0.0.6/processor.go:72:9:未定义:令牌.进程

为什么没有正确生成这些元组?

如何使用gopher-lua定义一个Lua函数,该函数有一个预定义的表作为param,Lua脚本可以在其中访问该函数中的表?

如何在Golang中覆盖404

使用 goroutine 比较 Golang 中的两棵树是等价的

该文件位于模块.内,该模块不包含在您的工作区中

从 ApiGateway 中的 lambda Go 返回 Json

这是泛型的有效用例吗?

Go 中的 YAML 自定义标签

为什么docall在singleflight中使用go panic?

当图像是对象数组的元素时,如何显示存储为页面资源的图像?

如何将元素从一个切片移动到另一个切片

在 Golang 模板中计算时间/持续时间

如何在自定义验证函数中获取 struct 名称

从golang中的url加载图像

try 执行`go test ./... -v`时,Golang中有没有办法设置标志