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