Карточка Middle Строки, байты и руны обновлено
Внутреннее устройство строки
Вопрос
Как устроена строка в памяти и сколько стоит её присваивание?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Заголовок из двух полей: указатель на байты и длина (16 байт на 64-битной платформе). Присваивание и передача копируют только заголовок, байты общие, это безопасно благодаря неизменяемости.
Ответ
Заголовок из двух полей: указатель на байты и длина (16 байт на 64-битной платформе). Присваивание и передача копируют только заголовок, байты общие, это безопасно благодаря неизменяемости.
Разбор
Подстрока s[a:b] тоже не копирует байты, а ссылается на тот же массив, поэтому может держать большую строку в памяти.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Строки, байты и руны»
- Байты и символы в строке Go
- Разворот строки с кириллицей на Go
- Сжатие RLE для строк UTF-8 на Go
- Палиндром с кириллицей и знаками на Go
- Перенос текста по ширине в символах на Go
- Что выведет Go: len и range по строке с кириллицей
- Что выведет Go: руны, байты и преобразования
- Что выведет Go: сравнение и срезы строк