Sobes.tech
Senior

Какви начини има за конкатениране на низове в Go? Каква е разликата между + и strings.Builder?

sobes.tech AI

Отговор от AI

В Go има няколко начина за конкатениране на низове:

  1. Операторът + — прост и удобен за малко количество низове.
  2. strings.Builder — ефективен начин за многократно съединяване, особено в цикли.
  3. bytes.Buffer — подобен на strings.Builder, но работи с байтове.
  4. fmt.Sprintf — форматиране на низове, но по-малко ефективно за простото съединяване.

Разликата между + и strings.Builder:

  • + създава нов низ при всяко съединяване, което води до заделяне на памет и копиране на данни. За малък брой операции това не е критично.
  • strings.Builder използва вътрешен буфер, който се разширява при необходимост, минимизирайки заделянето на памет и копирането. Това е значително по-ефективно при голям брой операции по съединяване.

Пример:

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

Използвайте + за прости случаи и strings.Builder за сложни или големи съединявания.