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

Индексация строки в Go

Вопрос

Что вернёт s[0] для s := "яблоко"?

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

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

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

Коротко

Правильный ответ: Первый байт UTF-8 кодировки «я», тип byte. Индекс по строке даёт байт (uint8), а «я» занимает два байта, так что получится только первый из них (208).

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

  1. Строку "я" длиной два байта
  2. Первый байт UTF-8 кодировки «я», тип byteправильный ответ
  3. Руну 'я' типа rune (int32)
  4. Ошибку компиляции: строки нельзя индексировать

Разбор

Индекс по строке даёт байт (uint8), а «я» занимает два байта, так что получится только первый из них (208). Чтобы получить символ, переводят в []rune(s)[0] или берут первую итерацию range. Индексировать строки можно, нельзя только присваивать s[0] = ....

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

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