Junção eficiente de strings em Go: como evitar problemas de desempenho?
Olá a todos! Comecei a estudar Go recentemente e me deparei com um problema de desempenho ao concatenar um grande número de strings. Em outras linguagens (como Java ou C#), estou acostumado a usar StringBuilder para concatenação eficiente. Em Go, vejo o operador `+`, mas ouvi dizer que ele pode ser lento com muitas operações.
Aqui está um exemplo de código que escrevi para montar uma string CSV a partir de um array de dados:
```go
package main
import (
"fmt"
"time"
)
func main() {
data := make([]string, 10000)
for i := 0; i < 10000; i++ {
data[i] = fmt.Sprintf("value_%d", i)
}
start := time.Now()
result := ""
for _, s := range data {
result += s + ","
}
fmt.Println("Time:", time.Since(start))
fmt.Println("Length:", len(result))
}
```
Este código funciona, mas suspeito que não seja eficiente. Ouvi falar sobre o pacote `strings.Builder` e sobre `bytes.Buffer`, mas não entendo em quais casos usá-los.
Minhas perguntas:
1.