Что происходит при конкатенации строк?

Junior
831 просмотров
AFK Offer AI

Строки в Go неизменяемые, поэтому каждая конкатенация через + создаёт новую строку с копированием данных обеих частей.

s := "hello" + " " + "world" // 2 аллокации промежуточных строк

Для единичной склейки + нормален. Для множественной (цикл) — используй strings.Builder:

var b strings.Builder
for i := 0; i < 1000; i++ {
    b.WriteString("x")
}
result := b.String() // одна аллокация (с ростом буфера)

strings.Builder растит внутренний []byte буфер, аналогично bytes.Buffer. fmt.Sprintf тоже аллоцирует, но удобен для форматирования.

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

Как работает semaphore через каналы?