Что будет, если обратиться к части строки по индексу

«Что будет, если обратиться к части строки по индексу» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go строки — это неизменяемые последовательности байт. При обращении по индексу s[i] вы получите байт, а не символ (руну). Это может вызвать проблемы с Unicode, так как символы могут занимать несколько байт.

Пример:

s := "привет"
fmt.Println(s[0]) // 208, а не 'п'

Для корректной работы с символами используйте преобразование в []rune:

runes := []rune(s)
fmt.Println(runes[0]) // 1087 (код символа 'п')

Важно: индексация байт работает только для ASCII-символов. Для многобайтовых символов используйте for range или utf8 пакет.