0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В Go строки - неизменяемы (immutable). Это значит, что при каждой операции конкатенации создаётся новая строка, а не изменяется существующая:</p>
1
<p>В Go строки - неизменяемы (immutable). Это значит, что при каждой операции конкатенации создаётся новая строка, а не изменяется существующая:</p>
2
<p>Код выше создает три строки в памяти, потому что строки в Go не модифицируются напрямую. Если таких операций много (например, при сборке HTML, SQL или при генерации отчёта), это приводит к лишним аллокациям и снижению производительности.</p>
2
<p>Код выше создает три строки в памяти, потому что строки в Go не модифицируются напрямую. Если таких операций много (например, при сборке HTML, SQL или при генерации отчёта), это приводит к лишним аллокациям и снижению производительности.</p>
3
<p>Для таких случаев стандартная библиотека Go предлагает эффективное решение - strings.Builder.</p>
3
<p>Для таких случаев стандартная библиотека Go предлагает эффективное решение - strings.Builder.</p>
4
<p>strings.Builder - это структура из пакета strings, предназначенная для эффективного построения строк. Он накапливает содержимое во внутреннем буфере, а финальную строку можно получить с помощью метода .String().</p>
4
<p>strings.Builder - это структура из пакета strings, предназначенная для эффективного построения строк. Он накапливает содержимое во внутреннем буфере, а финальную строку можно получить с помощью метода .String().</p>
5
<p>Для работы с рунами используется свой метод:</p>
5
<p>Для работы с рунами используется свой метод:</p>
6
<h2>Почему Builder быстрее</h2>
6
<h2>Почему Builder быстрее</h2>
7
<p>Каждый вызов + над строками в Go создает новую строку, копируя содержимое в новую память. Это дорого по производительности при большом числе операций. Builder же использует один буфер и растёт по мере необходимости, что сокращает число выделений памяти и операций копирования.</p>
7
<p>Каждый вызов + над строками в Go создает новую строку, копируя содержимое в новую память. Это дорого по производительности при большом числе операций. Builder же использует один буфер и растёт по мере необходимости, что сокращает число выделений памяти и операций копирования.</p>
8
<h2>Пример: Объединение с разделителем</h2>
8
<h2>Пример: Объединение с разделителем</h2>
9
9