Ответ
В Go строки — это неизменяемые последовательности байт. При обращении по индексу s[i] вы получите байт, а не символ (руну). Это может вызвать проблемы с Unicode, так как символы могут занимать несколько байт.
Пример:
s := "привет"
fmt.Println(s[0]) // 208, а не 'п'
Для корректной работы с символами используйте преобразование в []rune:
runes := []rune(s)
fmt.Println(runes[0]) // 1087 (код символа 'п')
Важно: индексация байт работает только для ASCII-символов. Для многобайтовых символов используйте for range или utf8 пакет.