Sobes.tech
Senior

Jaké jsou způsoby spojování řetězců v Go? V čem je rozdíl mezi + a strings.Builder?

sobes.tech AI

Odpověď od AI

V jazyce Go existuje několik způsobů, jak spojovat řetězce:

  1. Operátor + — jednoduchý a pohodlný pro malé množství řetězců.
  2. strings.Builder — efektivní způsob pro vícenásobné spojování, zejména v cyklech.
  3. bytes.Buffer — podobný strings.Builder, ale pracuje s bajty.
  4. fmt.Sprintf — formátování řetězců, ale méně efektivní pro jednoduché spojování.

Rozdíl mezi + a strings.Builder:

  • + vytváří při každém spojení nový řetězec, což vede k alokaci paměti a kopírování dat. U malého počtu operací to není kritické.
  • strings.Builder používá interní buffer, který se podle potřeby rozšiřuje, minimalizuje alokace a kopírování. To je mnohem efektivnější při velkém počtu spojování.

Příklad:

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

Použijte + pro jednoduché případy a strings.Builder pro složitější nebo větší spojování.