Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: rune, byte, Unicode, Go, string, UTF-8

Что такое rune в Go и чем он отличается от byte?

Вопрос проверяет понимание работы с Unicode и текстом в Go, а также различие между байтовым и символьным представлением строк.

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

Rune — это тип данных в Go, представляющий одно кодовое значение Unicode (int32). Byte — это просто uint8, представляющий один байт. Строки в Go хранятся как последовательность байт в кодировке UTF-8, поэтому один символ может занимать от 1 до 4 байт. Rune позволяет работать с символами, а не с байтами, что важно для корректной обработки текста на разных языках.

Длинный ответ

Что такое rune и byte в Go?

В Go тип byte является псевдонимом для uint8 и представляет один байт данных. Тип rune — это псевдоним для int32 и представляет одно кодовое значение Unicode (code point). Строки в Go хранятся как последовательность байт в кодировке UTF-8, где один символ может занимать от 1 до 4 байт. Поэтому итерация по строке как по байтам даст не символы, а отдельные байты, что может привести к ошибкам при работе с многобайтовыми символами.

Пример различия

package main

import "fmt"

func main() {
    s := "Привет"
    fmt.Println("Длина в байтах:", len(s)) // 12 байт
    
    // Итерация по байтам
    for i := 0; i < len(s); i++ {
        fmt.Printf("%x ", s[i])
    }
    // Вывод: d0 9f d1 80 d0 b8 d0 b2 d0 b5 d1 82
    
    // Итерация по рунам
    for _, r := range s {
        fmt.Printf("%c ", r)
    }
    // Вывод: П р и в е т
}

Когда использовать rune?

Используйте rune, когда нужно работать с отдельными символами строки, например, при подсчёте символов, изменении регистра или поиске подстроки с учётом Unicode. Используйте byte для низкоуровневой работы с данными, например, при чтении бинарных файлов или работе с сетевыми протоколами.

Вывод: Понимание разницы между rune и byte необходимо для корректной обработки текста на разных языках и избежания ошибок, связанных с многобайтовыми кодировками.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • Golang

    Golang

Ключевые слова

#rune

#byte

#Unicode

#Go

#string

#UTF-8

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.