如何解决考虑预分配(prealloc)皮棉?

时间:2020-01-14 13:25:52

标签: go slice lint

我在Consider preallocating [to] (prealloc)中发现了golangci-lint这个问题 我的代码是:

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

您有想法解决皮棉问题吗?

1 个答案:

答案 0 :(得分:8)

预先分配一个具有容量的片,以便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()
}