Concaténation efficace de chaînes en Go : comment joindre des chaînes correctement et rapidement
Bonjour à tous ! Je viens de commencer à apprendre Go et j'ai rencontré un problème de performance en travaillant avec des chaînes. Je dois assembler un grand rapport HTML à partir de nombreux fragments. Au début, j'utilisais simplement l'opérateur `+` :
```go
var result string
for i := 0; i < 100000; i++ {
result += fmt.Sprintf("
%d
", i)
}
```
Ce code fonctionne très lentement et consomme beaucoup de mémoire. J'ai lu que les chaînes en Go sont immuables, et chaque opération `+` crée une nouvelle chaîne en copiant les anciennes données. Pour 100 000 itérations, cela entraîne des frais généraux colossaux.
J'ai essayé d'utiliser `strings.Join`, mais cela ne fonctionne qu'avec des slices de chaînes, alors que je dois ajouter dynamiquement des éléments dans une boucle. J'ai aussi entendu parler de `bytes.Buffer` et `strings.Builder`. Quelle est la meilleure approche, la plus efficace pour Go ? Il est important pour moi non seulement d'accélérer le code, mais aussi de minimiser l'allocation mémoire et le travail du garbage collector.
Je serais reconnaissant pour des exemples concrets avec des benchmarks ou au moins une explication de pourquoi No answers yet.
Connectez-vous pour laisser une réponse