Выбор ответа Junior Строки, байты и руны обновлено
Можно ли изменить строку в Go
Вопрос
Как поменять первую букву ASCII-строки s := "hello" на заглавную?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Собрать новую строку через []byte(s) и string(b). Строки неизменяемы: присваивание по индексу не компилируется (оба варианта с s[0]).
Варианты ответа
s[0] = 'H', строки в Go изменяемыеs[0] -= 32, это сдвиг ASCII-кодаstrings.Replace(s, s[0], "H")меняет строку на месте- Собрать новую строку через
[]byte(s)иstring(b)правильный ответ
Разбор
Строки неизменяемы: присваивание по индексу не компилируется (оба варианта с s[0]). Любое «изменение» создаёт новую строку: через []byte (копия), strings.ToUpper(s[:1]) + s[1:] и т.п. Функции пакета strings тоже возвращают новые строки и ничего не меняют на месте, к тому же s[0] это byte, а не строка.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Строки, байты и руны»
- Байты и символы в строке Go
- Разворот строки с кириллицей на Go
- Сжатие RLE для строк UTF-8 на Go
- Палиндром с кириллицей и знаками на Go
- Перенос текста по ширине в символах на Go
- Что выведет Go: len и range по строке с кириллицей
- Что выведет Go: руны, байты и преобразования
- Что выведет Go: сравнение и срезы строк