Sobes.tech
Senior

Aké spôsoby existujú na spojenie reťazcov v Go? Aký je rozdiel medzi + a strings.Builder?

sobes.tech AI

Odpoveď od AI

V jazyku Go existuje niekoľko spôsobov, ako spojiť reťazce:

  1. Operátor + — jednoduchý a pohodlný pre malé množstvo reťazcov.
  2. strings.Builder — efektívny spôsob pre viackrátne spojovanie, najmä v slučkách.
  3. bytes.Buffer — podobný strings.Builder, ale pracuje s bajtmi.
  4. fmt.Sprintf — formátovanie reťazcov, ale menej efektívne pre jednoduché spojovanie.

Rozdiel medzi + a strings.Builder:

  • + vytvára pri každom spojení nový reťazec, čo vedie k alokácii pamäte a kopírovaniu dát. Pri malom počte operácií to nie je kritické.
  • strings.Builder používa interný buffer, ktorý sa rozširuje podľa potreby, minimalizujúc alokácie a kopírovanie. To je oveľa efektívnejšie pri veľkom počte spojení.

Príklad:

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

Použite + pre jednoduché prípady a strings.Builder pre zložitejšie alebo veľké spojenia.