Программа не компилируется: элемент строки нельзя присваивать, а "R" — строка, не байт. Даже первый println до ошибки не выполнится.
Какой вывод получит консоль в примере №14
Программа не компилируется: элемент строки нельзя присваивать, а "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-символов байтовую замену нужно отличать от замены рун или графем.