Back to questions
Холодильник.ру
Senior
4
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
В данном коде происходит конкатенация строк в цикле с помощью оператора +=, что в Go неэффективно, так как строки неизменяемы, и каждый раз создаётся новая строка, копируя старую и добавляя новую часть. Это приводит к большому количеству аллокаций и снижению производительности.
Лучше использовать strings.Builder для эффективной сборки строки:
func fn() {
var builder strings.Builder
for i := 0; i < 100000; i++ {
builder.WriteString(fmt.Sprintf("%d", i))
}
fmt.Println(builder.String())
}
strings.Builder аккумулирует данные в буфере и минимизирует количество аллокаций, что значительно ускоряет выполнение и снижает нагрузку на сборщик мусора.