Ответ
Байт (byte) — это алиас для uint8 (8 бит), представляет один байт данных. Используется для работы с сырыми бинарными данными или ASCII символами.
Руна (rune) — это алиас для int32 (32 бита), представляет Unicode кодпоинт. Может хранить любой символ UTF-8, включая многобайтовые (например, кириллицу, эмодзи).
Пример:
s := "Привет, 世界!"
fmt.Println(len(s)) // 19 байт
fmt.Println(len([]rune(s))) // 9 рун
Ключевые отличия:
- Байт работает с сырыми данными, руна — с Unicode.
- Рун может потребоваться несколько байт для представления одного символа.
rangeпо строке итерирует по рунам, а не по байтам.