Sobes.tech
Senior

Kādi ir veidi, kā savienot virknes Go? Kāda ir atšķirība starp + un strings.Builder?

sobes.tech AI

Atbilde no AI

Go valodā ir vairāki veidi, kā savienot virknes:

  1. + operators — vienkārši un ērti mazam virkņu skaitam.
  2. strings.Builder — efektīva metode vairākkārtējai savienošanai, īpaši ciklos.
  3. bytes.Buffer — līdzīgs strings.Builder, bet darbojas ar baitiem.
  4. fmt.Sprintf — virkņu formatēšana, bet mazāk efektīva vienkāršai savienošanai.

Atšķirība starp + un strings.Builder:

  • + katrā savienošanas reizē izveido jaunu virkni, kas noved pie atmiņas sadalīšanas un datu kopēšanas. Mazam operāciju skaitam tas nav kritiski.
  • strings.Builder izmanto iekšējo buferi, kas pēc vajadzības paplašinās, minimizējot atmiņas sadalīšanu un kopēšanu. Tas ir daudz efektīvāk lielam savienojumu skaitam.

Piemērs:

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

Izmantojiet + vienkāršiem gadījumiem un strings.Builder sarežģītākām vai lielākām savienošanām.