Чем отличается байт от руны

«Чем отличается байт от руны» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Байт (byte) — это алиас для uint8 (8 бит), представляет один байт данных. Используется для работы с сырыми бинарными данными или ASCII символами.

Руна (rune) — это алиас для int32 (32 бита), представляет Unicode кодпоинт. Может хранить любой символ UTF-8, включая многобайтовые (например, кириллицу, эмодзи).

Пример:

s := "Привет, 世界!"
fmt.Println(len(s))             // 19 байт
fmt.Println(len([]rune(s)))    // 9 рун

Ключевые отличия:

  • Байт работает с сырыми данными, руна — с Unicode.
  • Рун может потребоваться несколько байт для представления одного символа.
  • range по строке итерирует по рунам, а не по байтам.