Avatar ·

Effiziente String-Konkatenation in Go: Wie man Strings richtig und schnell verbindet

Hallo zusammen! Ich habe gerade angefangen, Go zu lernen, und bin auf ein Performance-Problem bei der Arbeit mit Strings gestoßen. Ich muss einen großen HTML-Bericht aus vielen Fragmenten zusammenstellen. Ursprünglich habe ich einfach den `+`-Operator verwendet:\n\n```go\nvar result string\nfor i := 0; i < 100000; i++ {\n result += fmt.Sprintf("
%d
", i)\n}\n```\n\nDieser Code läuft sehr langsam und verbraucht viel Speicher. Ich habe gelesen, dass Strings in Go unveränderlich sind und jede `+`-Operation einen neuen String erstellt, wobei alte Daten kopiert werden. Bei 100.000 Iterationen führt dies zu enormem Overhead.\n\nIch habe `strings.Join` ausprobiert, aber es funktioniert nur mit Slices von Strings, während ich Elemente dynamisch in einer Schleife hinzufügen muss. Ich habe auch von `bytes.Buffer` und `strings.Builder` gehört. Welcher dieser Ansätze ist der richtigste und effizienteste?