Sobes.tech
Senior

Millised on stringide ühendamise viisid Go-s? Mis vahe on + ja strings.Builder vahel?

sobes.tech AI

Vastus AI-lt

Go keeles on mitu viisi stringide ühendamiseks:

  1. + operaator — lihtne ja mugav väikese arvu stringide jaoks.
  2. strings.Builder — tõhus viis korduvaks ühendamiseks, eriti tsüklites.
  3. bytes.Buffer — sarnane strings.Builder-le, kuid töötab baitidega.
  4. fmt.Sprintf — stringide vormindamine, kuid vähem tõhus lihtsate ühenduste jaoks.

Erinevus + ja strings.Builder vahel:

  • + loob iga ühendamise korral uue stringi, mis põhjustab mälu eraldamise ja andmete koopiate tegemise. Väikese arvu operatsioonide puhul ei ole see kriitiline.
  • strings.Builder kasutab sisemist pufferit, mis laieneb vastavalt vajadusele, minimeerides mälu eraldamist ja koopiate tegemist. See on palju tõhusam suure arvu ühenduste puhul.

Näide:

var sb strings.Builder
for _, s := range parts {
    sb.WriteString(s)
}
result := sb.String()

Kasuta + lihtsate juhtude jaoks ja strings.Builder keerulisemate või suuremate ühenduste jaoks.