Sobes.tech
Back to questions
Senior
6

Какие способы конкатенации строк есть в Go? В чём разница между + и strings.Builder?

Companies where asked
Lenta Tech

Answer from AI

sobes.tech AI

В Go есть несколько способов конкатенации строк:

  1. Оператор + — простой и удобный для небольшого количества строк.
  2. strings.Builder — эффективный способ для многократной конкатенации, особенно в циклах.
  3. bytes.Buffer — похож на strings.Builder, но работает с байтами.
  4. fmt.Sprintf — форматирование строк, но менее эффективно для простой конкатенации.

Разница между + и strings.Builder:

  • + создаёт новую строку при каждом объединении, что приводит к выделению памяти и копированию данных. При небольшом числе операций это не критично.
  • strings.Builder использует внутренний буфер, который расширяется по мере необходимости, минимизируя количество выделений памяти и копирований. Это значительно эффективнее при большом числе операций конкатенации.

Пример:

var sb strings.Builder
for _, s := range parts {
    sb.WriteString(s)
}
result := sb.String()

Используйте + для простых случаев и strings.Builder для сложных или больших конкатенаций.