Sobes.tech
Senior

// ¿Cuál es el problema con este código? ¿Cómo mejorarlo? func fn() { str := "" for i := 0; i < 100000; i++ { str += fmt.Sprintf("%d", i) } fmt.Println(str) }

sobes.tech AI

Respuesta de la IA

El problema de este código es que la cadena str se concatena en un bucle usando el operador +=. En Go, las cadenas son inmutables, por lo que en cada iteración se crea una nueva cadena, lo que conduce a muchas asignaciones y reduce el rendimiento.

Es mejor usar strings.Builder o bytes.Buffer para acumular cadenas de manera eficiente:

import (
    "fmt"
    "strings"
)

func fn() {
    var builder strings.Builder
    for i := 0; i < 100000; i++ {
        builder.WriteString(fmt.Sprintf("%d", i))
    }
    fmt.Println(builder.String())
}

Esto reducirá significativamente el número de asignaciones y acelerará la ejecución del código.