Back to questions
Холодильник.ру
Senior
5
// чем плох этот код? как его улучшить? func fn() { str := "" for i := 0; i < 100000; i++ { str += fmt.Sprintf("%d", i) } fmt.Println(str) }
Companies where asked
Answer from AI
sobes.tech AI
Проблема этого кода в том, что строка str конкатенируется в цикле с помощью оператора +=. В Go строки неизменяемы, поэтому при каждой итерации создаётся новая строка, что приводит к большому количеству аллокаций и снижению производительности.
Лучше использовать strings.Builder или bytes.Buffer для эффективного накопления строк:
import (
"fmt"
"strings"
)
func fn() {
var builder strings.Builder
for i := 0; i < 100000; i++ {
builder.WriteString(fmt.Sprintf("%d", i))
}
fmt.Println(builder.String())
}
Это значительно уменьшит количество аллокаций и ускорит выполнение кода.