Что произойдёт при сложении строк?

Intern
351 просмотров
AFK Offer AI

Создаётся новая строка — аллокация памяти и копирование обеих строк. Строки в Go иммутабельны: s = s + "!" аллоцирует новый массив байт, копирует старые данные + новый символ.

Для единичной конкатенации a + b это нормально. В цикле — плохо: каждая итерация аллоцирует. Используй strings.Builder:

// плохо: O(n²)
result := ""
for _, s := range items {
    result += s
}

// хорошо: O(n) var b strings.Builder for _, s := range items { b.WriteString(s) }

Следующий вопрос

Как профилировать CPU?