Можно ли использовать range для обхода строки и получить байты, а не руны?

Range по строке возвращает байтовую позицию и rune, а не каждый байт. Для байтов используйте индексный цикл или range по []byte(s).

Короткий ответ

Что ответить на собеседовании

Range по строке возвращает байтовую позицию и rune, а не каждый байт. Для байтов используйте индексный цикл или range по []byte(s).

Подробный разбор

Ответ с пояснениями

Range по строке возвращает байтовую позицию и rune, а не каждый байт. Для байтов используйте индексный цикл или range по []byte(s).

for i := 0; i < len(s); i++ {
    b := s[i]
    _ = b
}

Так обходятся все байты UTF-8, включая части многобайтового символа. Это правильно для бинарной обработки, но не равно обходу видимых символов. У range по строке индексы могут увеличиваться больше чем на единицу.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее