Назад к вопросам
Junior — Middle
88
Какие особенности есть при обходе символов строки в программировании?
Компании, где спрашивали
Эрливидео
Самокат Тех
Ответ от нейросети
sobes.tech AI
В Go строки представлены как последовательность байтов, но часто содержат символы в кодировке UTF-8, где один символ (руна) может занимать несколько байтов. При обходе строки по индексам (например, for i := 0; i < len(s); i++) вы проходите по байтам, а не по символам, что может привести к некорректной обработке многобайтовых символов.
Чтобы корректно обходить именно символы, используют цикл for range, который итерируется по рунам (Unicode кодовым точкам):
s := "Привет"
for i, r := range s {
fmt.Printf("индекс: %d, символ: %c\n", i, r)
}
Здесь i — индекс первого байта руны в строке, а r — сама руна. Это важно для правильной работы с многоязычными текстами и символами вне ASCII.