Обработай паническую ситуацию в Go

Это ошибка компиляции, не panic: строки неизменяемы, а fmt не импортирован. Для замены символа создайте изменяемый срез и новую строку.

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

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

Это ошибка компиляции, не 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 здесь не помогает: ошибки компиляции происходят до запуска программы.

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

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

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

Подробнее