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.