Карточка Junior Строки, байты и руны обновлено
strings.Builder
Вопрос
Чем strings.Builder лучше += и есть ли у него ограничения?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Он копит байты в растущем буфере и отдаёт строку без лишней копии, поэтому склейка линейная. Ограничения: нельзя копировать Builder после использования (паника), он не потокобезопасен.
Ответ
Он копит байты в растущем буфере и отдаёт строку без лишней копии, поэтому склейка линейная. Ограничения: нельзя копировать Builder после использования (паника), он не потокобезопасен.
Разбор
Если известен итоговый размер, sb.Grow(n) уберёт промежуточные аллокации.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Строки, байты и руны»
- Байты и символы в строке Go
- Разворот строки с кириллицей на Go
- Сжатие RLE для строк UTF-8 на Go
- Палиндром с кириллицей и знаками на Go
- Перенос текста по ширине в символах на Go
- Что выведет Go: len и range по строке с кириллицей
- Что выведет Go: руны, байты и преобразования
- Склейка строк в цикле