У строки Go есть дескриптор и байтовые данные; они не обязаны находиться в одной области. Размещение зависит от происхождения строки и escape analysis.
Где в Go хранятся строки — в heap или в stack?
У строки Go есть дескриптор и байтовые данные; они не обязаны находиться в одной области. Размещение зависит от происхождения строки и escape analysis.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
У строки Go есть дескриптор и байтовые данные; они не обязаны находиться в одной области. Размещение зависит от происхождения строки и escape analysis.
Строковые литералы могут ссылаться на статические данные, а созданные во время работы строки — на данные в куче или оптимизированное временное хранение. Сам дескриптор может быть локальным либо частью другого объекта. Нельзя утверждать, что все строки всегда находятся в heap или stack. Физическое размещение — деталь реализации, а неизменяемость строки — семантика языка.