Выбор ответа Junior Строки, байты и руны обновлено

Можно ли изменить строку в Go

Вопрос

Как поменять первую букву ASCII-строки s := "hello" на заглавную?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Собрать новую строку через []byte(s) и string(b). Строки неизменяемы: присваивание по индексу не компилируется (оба варианта с s[0]).

Варианты ответа

  1. s[0] = 'H', строки в Go изменяемые
  2. s[0] -= 32, это сдвиг ASCII-кода
  3. strings.Replace(s, s[0], "H") меняет строку на месте
  4. Собрать новую строку через []byte(s) и string(b)правильный ответ

Разбор

Строки неизменяемы: присваивание по индексу не компилируется (оба варианта с s[0]). Любое «изменение» создаёт новую строку: через []byte (копия), strings.ToUpper(s[:1]) + s[1:] и т.п. Функции пакета strings тоже возвращают новые строки и ничего не меняют на месте, к тому же s[0] это byte, а не строка.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.