Выбор ответа Junior Строки, байты и руны обновлено
Индексация строки в Go
Вопрос
Что вернёт s[0] для s := "яблоко"?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Первый байт UTF-8 кодировки «я», тип byte. Индекс по строке даёт байт (uint8), а «я» занимает два байта, так что получится только первый из них (208).
Варианты ответа
- Строку "я" длиной два байта
- Первый байт UTF-8 кодировки «я», тип byteправильный ответ
- Руну 'я' типа rune (int32)
- Ошибку компиляции: строки нельзя индексировать
Разбор
Индекс по строке даёт байт (uint8), а «я» занимает два байта, так что получится только первый из них (208). Чтобы получить символ, переводят в []rune(s)[0] или берут первую итерацию range. Индексировать строки можно, нельзя только присваивать s[0] = ....
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Строки, байты и руны»
- Байты и символы в строке Go
- Разворот строки с кириллицей на Go
- Сжатие RLE для строк UTF-8 на Go
- Палиндром с кириллицей и знаками на Go
- Перенос текста по ширине в символах на Go
- Что выведет Go: len и range по строке с кириллицей
- Что выведет Go: руны, байты и преобразования
- Что выведет Go: сравнение и срезы строк