Наиболее эффективно использовать strings.Builder: он наращивает буфер без лишних аллокаций. Конкатенация через += каждый раз создаёт новую строку (O(n^2) по памяти и времени). strings.Join эффективен, когда все строки уже в слайсе.
var b strings.Builder
for _, s := range items {
b.WriteString(s)
}
result := b.String()
b.Grow(totalLen) // одна аллокация под весь размер
for _, s := range items {
b.WriteString(s)
}
Builder внутри хранит []byte и при необходимости увеличивает его (удваивает capacity). Копирование в string делается один раз в конце. Не используйте += в цикле для большого числа строк.