Concatenación eficiente de strings en Go: cómo unir strings de forma correcta y rápida
¡Hola a todos! Acabo de empezar a estudiar Go y me encontré con un problema de rendimiento al trabajar con strings. Necesito armar un informe HTML grande a partir de muchos fragmentos. Inicialmente, simplemente usé el operador `+`:
```go
var result string
for i := 0; i < 100000; i++ {
result += fmt.Sprintf("
%d
", i)
}
```
Este código funciona muy lento y consume mucha memoria. Leí que los strings en Go son inmutables, y cada operación `+` crea un nuevo string, copiando los datos antiguos. Para 100,000 iteraciones, esto genera una sobrecarga enorme.
Probé usar `strings.Join`, pero solo funciona con slices de strings, y necesito agregar elementos dinámicamente en un bucle. También escuché sobre `bytes.Buffer` y `strings.Builder`. ¿Cuál de estos enfoques es el más correcto y eficiente para Go? Me importa no solo acelerar el código, sino también minimizar la asignación de memoria y el trabajo del garbage collector.
Agradecería ejemplos concretos con benchmarks o al menos una explicación de por qué