Concatenação eficiente de strings em Go: como unir strings corretamente e rapidamente
Olá a todos! Comecei a estudar Go recentemente e me deparei com um problema de desempenho ao trabalhar com strings. Preciso montar um grande relatório HTML a partir de vários fragmentos. Inicialmente, usei o operador `+`:
```go
var result string
for i := 0; i < 100000; i++ {
result += fmt.Sprintf("
%d
", i)
}
```
Esse código funciona muito lentamente e consome muita memória. Li que strings em Go são imutáveis, e cada operação `+` cria uma nova string, copiando os dados antigos. Para 100.000 iterações, isso gera uma sobrecarga enorme.
Tentei usar `strings.Join`, mas ele funciona apenas com slices de strings, e preciso adicionar elementos dinamicamente em um loop. Também ouvi falar sobre `bytes.Buffer` e `strings.Builder`. Qual dessas abordagens é a mais correta e eficiente para Go? É importante para mim não apenas acelerar o código, mas também minimizar a alocação de memória e o trabalho do garbage collector.
Ficarei grato por exemplos concretos com benchmarks ou pelo menos uma explicação de por que No answers yet.
Faça login para deixar uma resposta