Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Какую кодировку используют строки в Go?

Вопрос проверяет понимание того, как Go представляет строки и как это влияет на работу с текстом, включая Unicode.

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

Строки в Go являются неизменяемыми последовательностями байтов. Они не обязательно должны быть в UTF-8, но Go имеет встроенную поддержку этой кодировки. Для работы с Unicode-символами используется тип `rune`, который представляет собой Unicode code point.

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

Кодировка строк в Go

В Go строки — это неизменяемые последовательности байтов. Это означает, что строка может содержать любые байты, включая нулевые. Однако, по соглашению и для удобства работы с текстом, Go активно поддерживает кодировку UTF-8. Исходный код Go сам по себе является UTF-8, и строковые литералы по умолчанию интерпретируются как UTF-8.

Типы byte и rune

Для работы с отдельными символами Go предоставляет два типа:

  • byte — это псевдоним для uint8, представляет один байт.
  • rune — это псевдоним для int32, представляет Unicode code point (один символ).

При итерации по строке с помощью цикла for i := 0; i < len(s); i++ вы получаете байты. Для итерации по рунам (символам) используется for i, r := range s.

Пример кода

package main

import "fmt"

func main() {
    s := "Привет, мир!"
    fmt.Println("Длина в байтах:", len(s)) // 21 байт

    // Итерация по байтам
    for i := 0; i < len(s); i++ {
        fmt.Printf("%x ", s[i])
    }
    fmt.Println()

    // Итерация по рунам
    for i, r := range s {
        fmt.Printf("Позиция %d: %c (U+%04X)\n", i, r, r)
    }
}

Вывод

Понимание того, что строки в Go — это байтовые последовательности с поддержкой UTF-8, критично для корректной обработки текста, особенно при работе с многоязычными данными. Используйте тип rune и цикл for range для безопасной работы с Unicode-символами.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • Golang

    Golang

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

#Go strings

#UTF-8

#rune

#byte

#Unicode

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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