Sobes.tech
Senior

// Qual é o problema com este código? Como melhorá-lo? func fn() { str := "" for i := 0; i < 100000; i++ { str += fmt.Sprintf("%d", i) } fmt.Println(str) }

sobes.tech IA

Resposta da IA

O problema deste código é que a string str é concatenada num ciclo usando o operador +=. Em Go, as strings são imutáveis, portanto, em cada iteração, uma nova string é criada, o que leva a muitas alocações e diminui o desempenho.

É melhor usar strings.Builder ou bytes.Buffer para acumular strings de forma 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())
}

Isso reduzirá significativamente o número de alocações e acelerará a execução do código.