Range по строке возвращает байтовую позицию и rune, а не каждый байт. Для байтов используйте индексный цикл или range по []byte(s).
Можно ли использовать range для обхода строки и получить байты, а не руны?
Range по строке возвращает байтовую позицию и rune, а не каждый байт. Для байтов используйте индексный цикл или range по []byte(s).
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Range по строке возвращает байтовую позицию и rune, а не каждый байт. Для байтов используйте индексный цикл или range по []byte(s).
for i := 0; i < len(s); i++ {
b := s[i]
_ = b
}
Так обходятся все байты UTF-8, включая части многобайтового символа. Это правильно для бинарной обработки, но не равно обходу видимых символов. У range по строке индексы могут увеличиваться больше чем на единицу.