Sobes.tech
Senior

Koje su metode spajanja nizova u Go? Koja je razlika između + i strings.Builder?

sobes.tech АИ

Одговор од АИ

U Go-u postoji nekoliko načina za konkatenaciju nizova:

  1. Operator + — jednostavan i zgodan za mali broj nizova.
  2. strings.Builder — efikasan način za višestruku konkatenaciju, posebno u petljama.
  3. bytes.Buffer — sličan strings.Builder, ali radi sa bajtovima.
  4. fmt.Sprintf — formatiranje nizova, ali manje efikasno za jednostavne konkatenacije.

Razlika između + i strings.Builder:

  • + kreira novi niz pri svakoj konkatenaciji, što dovodi do alokacije memorije i kopiranja podataka. Za mali broj operacija, ovo nije kritično.
  • strings.Builder koristi unutrašnji bafer koji se proširuje po potrebi, minimizirajući alokacije memorije i kopiranje. Ovo je znatno efikasnije kod velikog broja konkatenacija.

Primer:

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

Koristite + za jednostavne slučajeve i strings.Builder za složenije ili velike konkatenacije.