Sobes.tech
Senior

Jakie są sposoby łączenia łańcuchów w Go? Czym różni się + od strings.Builder?

sobes.tech AI

Odpowiedź od AI

W Go istnieje kilka sposobów łączenia łańcuchów:

  1. Operator + — prosty i wygodny dla niewielkiej liczby łańcuchów.
  2. strings.Builder — wydajny sposób na wielokrotne łączenie, szczególnie w pętlach.
  3. bytes.Buffer — podobny do strings.Builder, ale działa na bajtach.
  4. fmt.Sprintf — formatowanie łańcuchów, ale mniej wydajne dla prostych operacji łączenia.

Różnica między + a strings.Builder:

  • + tworzy nowy łańcuch przy każdym łączeniu, co prowadzi do alokacji pamięci i kopiowania danych. Przy niewielkiej liczbie operacji nie jest to krytyczne.
  • strings.Builder używa wewnętrznego bufora, który jest rozszerzany w razie potrzeby, minimalizując alokacje pamięci i kopiowanie. Jest to znacznie bardziej wydajne przy dużej liczbie operacji łączenia.

Przykład:

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

Używaj + dla prostych przypadków i strings.Builder dla złożonych lub dużych operacji łączenia.