Проверяет знание эффективных способов конкатенации строк в Go и понимание их производительности.
Строки в Go неизменяемы, поэтому каждая операция конкатенации создаёт новую строку, копируя содержимое. При большом количестве операций это приводит к множественным аллокациям памяти и снижению производительности. Понимание эффективных способов склеивания строк важно для написания быстрых приложений, особенно при обработке больших объёмов данных или в высоконагруженных сервисах.
package main
import (
"fmt"
"strings"
)
func main() {
// Неэффективно: создаёт много промежуточных строк
s := ""
for i := 0; i < 1000; i++ {
s += "a"
}
// Эффективно: использует буфер
var sb strings.Builder
for i := 0; i < 1000; i++ {
sb.WriteString("a")
}
result := sb.String()
fmt.Println(len(result))
}Если нужно склеить всего несколько строк, оператор + вполне подойдёт. Для циклов или динамического построения строк всегда выбирайте strings.Builder. bytes.Buffer полезен, когда нужно работать с байтами, например, при сериализации. fmt.Sprintf используйте только когда нужно форматирование с подстановкой значений.
Эффективная конкатенация строк в Go — это использование strings.Builder для множественных операций, что значительно снижает нагрузку на память и повышает скорость. Это особенно важно в серверных приложениях, обработке логов, генерации HTML или JSON. Правильный выбор метода конкатенации помогает писать производительный и масштабируемый код.