Строка должна остаться ab: обычное преобразование сохраняет независимое строковое значение. Точное число аллокаций зависит от оптимизаций компилятора и контекста использования.
Копирует ли преобразование []byte в string данные
Строка должна остаться ab: обычное преобразование сохраняет независимое строковое значение. Точное число аллокаций зависит от оптимизаций компилятора и контекста использования.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В Go выполнено b := []byte{'a','b'}; s := string(b); b[0] = 'z'; fmt.Println(s). Должна ли строка измениться и можно ли из этого вывести точное число аллокаций?
Ответ
Строка должна остаться ab: обычное преобразование сохраняет независимое строковое значение. Точное число аллокаций зависит от оптимизаций компилятора и контекста использования.
Не путайте языковую семантику с деталями выделения памяти: компилятор может убрать лишнюю аллокацию, если наблюдаемое поведение сохраняется. Изменяемый []byte нельзя безопасно считать разделяющим память с неизменяемой строкой через обычный контракт. Unsafe-преобразования обходят гарантии и требуют отдельного строгого владения данными.