Ответ
Для корректного подсчета символов в строке с кириллицей используйте utf8.RuneCountInString(), так как len() вернет количество байт, а не символов.
s := "Привет"
count := utf8.RuneCountInString(s) // 6
Важные моменты:
len()даст неверный результат (12 для "Привет")- Работает с любыми Unicode-символами
- Для итерации по строке тоже используйте
range, он корректно обрабатывает Unicode
Пример:
for i, r := range "Привет" {
fmt.Printf("%d: %cn", i, r)
}