Sobes.tech
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.