Программа не скомпилируется: строку нельзя изменять по индексу, а fmt не импортирован. До выполнения и консольного вывода дело не дойдёт.
Какой результат будет выведен программой
Программа не скомпилируется: строку нельзя изменять по индексу, а fmt не импортирован. До выполнения и консольного вывода дело не дойдёт.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какой текст появится в консоли после выполнения приведённого кода.
package main
// import "fmt"
func main() {
str := "Hello world"
str[0] = 'h'
fmt.Println(str)
}
Ответ
Программа не скомпилируется: строку нельзя изменять по индексу, а fmt не импортирован. До выполнения и консольного вывода дело не дойдёт.
Для данного ASCII-текста исправление выглядит так:
package main
import "fmt"
func main() {
str := "Hello world"
data := []byte(str)
data[0] = 'h'
fmt.Println(string(data))
}
Теперь будет выведено hello world. Для произвольного Unicode-текста замена символа обычно требует []rune или обработки графем. Это не ситуация runtime panic, поэтому добавление recover исходную ошибку компиляции не исправляет.