Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goPmChSB 78 of 350 menu
◀ ▶

Байт из строки в 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.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить