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())
}
Бул бөлүштүрүүлөрдүн санын кыйла азайтат жана коддун иштөө ылдамдыгын жогорулатат.