Döngüde String Birleştirme (ARCH5070)
Anahtar go.performance.string-concat-in-loop · Önem warning · Kategori performance
Go’da string’ler değişmezdir; döngü içinde += ile birleştirmek her yinelemede yeni bir tampon tahsis edip kopyalar, sonuçta O(n^2) maliyete yol açar. Bunun yerine strings.Builder kullanın.
Hatalı
Bölüm başlığı “Hatalı”func join(items []string) string { var result string for _, item := range items { result += item + "," } return result}func join(items []string) string { var b strings.Builder for _, item := range items { b.WriteString(item) b.WriteByte(',') } return b.String()}Düzeltme
Bölüm başlığı “Düzeltme”Döngü içinde += yerine strings.Builder kullanarak tek tamponda biriktirin.