Sobes.tech
Senior

// Ин код чӣ хато дорад? Чӣ гуна онро беҳтар кардан мумкин аст? func fn() { str := "" for i := 0; i < 100000; i++ { str += fmt.Sprintf("%d", i) } fmt.Println(str) }

sobes.tech AI

Ҷавоб аз AI

Масъалаи ин коди он аст, ки сатр str дар дохили доира бо истифода аз оператори += пайваст карда мешавад. Дар Go, сатрҳо тағйирнопазиранд, бинобар ин дар ҳар такрор сатр нав сохта мешавад, ки ба шумораи зиёди таъинотҳо ва кам шудани иҷроиш оварда мерасонад.

Беҳтар аст, ки барои ҷамъоварии самараноки сатрҳо strings.Builder ё bytes.Buffer истифода шавад:

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())
}

Ин шумораи таъинотҳоро ба таври назаррас кам мекунад ва иҷрои кодиҳоро суръат мебахшад.