Sobes.tech
Back to questions
Junior — Middle
90

Какие особенности есть при обходе символов строки в программировании?

Companies where asked
Эрливидео
Самокат Тех

Answer from AI

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.