Какой вывод получит консоль в примере №14

Программа не компилируется: элемент строки нельзя присваивать, а "R" — строка, не байт. Даже первый println до ошибки не выполнится.

Короткий ответ

Что ответить на собеседовании

Программа не компилируется: элемент строки нельзя присваивать, а "R" — строка, не байт. Даже первый println до ошибки не выполнится.

Подробный разбор

Ответ с пояснениями

Условие

Определите, какой текст будет выведен после выполнения следующего кода:

s := "test"
println(s[0])
s[0] = "R"
println(s)

Обратите внимание на особенности работы со строками в Go.

Ответ

Программа не компилируется: элемент строки нельзя присваивать, а "R" — строка, не байт. Даже первый println до ошибки не выполнится.

Компилятор проверяет программу до запуска, поэтому нельзя считать 116 реальным первым выводом данного исходника. Если убрать ошибочное присваивание, s[0] является байтом со значением 116, а не строкой "t".

Для исправленного результата можно сделать b := []byte(s); b[0] = 'R'; println(string(b)), что даст Rest. Для произвольных Unicode-символов байтовую замену нужно отличать от замены рун или графем.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее