Sobes.tech
Senior

Care sunt metodele de concatenare a șirurilor în Go? Care este diferența dintre + și strings.Builder?

sobes.tech AI

Răspuns de la AI

În Go, există mai multe moduri de a concatena șiruri de caractere:

  1. Operatorul + — simplu și convenabil pentru un număr mic de șiruri.
  2. strings.Builder — metodă eficientă pentru concatenări multiple, mai ales în bucle.
  3. bytes.Buffer — similar cu strings.Builder, dar funcționează cu octeți.
  4. fmt.Sprintf — formatare de șiruri, dar mai puțin eficient pentru concatenări simple.

Diferența dintre + și strings.Builder:

  • + creează un șir nou la fiecare concatenare, ceea ce duce la alocarea de memorie și copierea datelor. Pentru un număr mic de operații, acest lucru nu este critic.
  • strings.Builder folosește un tampon intern, care se extinde după nevoie, minimizând alocările de memorie și copierea. Este mult mai eficient pentru un număr mare de operații de concatenare.

Exemplu:

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

Utilizați + pentru cazuri simple și strings.Builder pentru concatenări complexe sau mari.