Как повысить эффективность сложения строк

«Как повысить эффективность сложения строк» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go строки иммутабельны, поэтому каждое сложение создает новую строку. Для эффективной конкатенации:

  1. strings.Builder - лучший выбор для множественных сложений:
var b strings.Builder
b.WriteString("Hello")
b.WriteString(" ")
b.WriteString("World")
result := b.String()
  1. bytes.Buffer - альтернатива Builder'у:
var buf bytes.Buffer
buf.WriteString("foo")
buf.WriteString("bar")
  1. strings.Join() - для объединения слайса строк:
parts := []string{"a", "b", "c"}
result := strings.Join(parts, "")
  1. Предварительное выделение памяти (если известен размер):
b := strings.Builder{}
b.Grow(100) // резервируем память

Простые операции с + подходят только для 2-3 строк, в остальных случаях Builder на 50-90% быстрее.