Как решить Рассмотреть вопрос о выделении (preallo c) ворса? - PullRequest
3 голосов
/ 14 января 2020

Я уловил Consider preallocating [to] (prealloc) эту проблему в golangci-lint Мой код:

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

У вас есть идея, чтобы решить эту проблему в пуху?

1 Ответ

6 голосов
/ 14 января 2020

Предварительно выделите фрагмент с емкостью, поэтому 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()
}
...