Байт из строки в Go
Индекс строки отдает байт, а не целую букву.
Запись s[0] для строки s имеет
тип byte: это первый байт текста в
памяти, а не тип rune. Индекс считает
байты, не буквы на экране.
Для английского слова из обычных латинских букв каждый символ в UTF-8 часто занимает один байт, поэтому первый байт совпадает с первой буквой по коду. Для других языков один символ может занимать несколько байт, и тогда один индекс не равен одной букве.
Возьмем байты из короткого английского слова:
word := "go"
first := word[0]
second := word[1]
fmt.Println(first)
fmt.Println(second)
fmt.Printf("%c\n", first)
fmt.Printf("%c\n", second)
Дана строка:
name := "hi"
Выведите name[0] и name[1]
как символы.
Дана строка:
text := "run"
Выведите байт с индексом 2 как символ.
Скажите, какой тип у выражения "ab"[0]
и почему это не rune.