Avatar ·

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é