Ответ
String Builder в Go — это эффективный способ конкатенации строк без лишних аллокаций памяти. В отличие от обычного + или +=, он использует bytes.Buffer или strings.Builder для накопления данных перед финальным преобразованием в строку.
Пример:
package main
import (
"strings"
)
func main() {
var builder strings.Builder
for i := 0; i < 10; i++ {
builder.WriteString("a") // Добавляем строку без копирования
}
result := builder.String() // Получаем итоговую строку
println(result)
}
Почему лучше +?
- При конкатенации через
+каждый раз создаётся новая строка, что приводит к O(n²) сложности. strings.Builderкопит данные в буфере и делает одно выделение памяти в конце.
Важно:
- После вызова
String()нельзя повторно использовать билдер безReset(). WriteStringиWriteоптимизированы для минимизации копирований.