Senior
// Bu kodun kötü yanı nedir? Nasıl geliştirilebilir? func fn() { str := "" for i := 0; i < 100000; i++ { str += fmt.Sprintf("%d", i) } fmt.Println(str) }
sobes.tech yapay zeka
AI'dan gelen yanıt
Bu kodun sorunu, str dizesinin += operatörü kullanılarak bir döngüde birleştirilmesidir. Go'da dizeler değiştirilemez, bu nedenle her yinelemede yeni bir dize oluşturulur, bu da çok sayıda tahsisata yol açar ve performansı düşürür.
Daha verimli dize birikimi için strings.Builder veya bytes.Buffer kullanmak daha iyidir:
import (
"fmt"
"strings"
)
func fn() {
var builder strings.Builder
for i := 0; i < 100000; i++ {
builder.WriteString(fmt.Sprintf("%d", i))
}
fmt.Println(builder.String())
}
Bu, tahsisat sayısını önemli ölçüde azaltacak ve kodun çalışmasını hızlandıracaktır.