Go Academy · Урок

Константы и iota

Определяйте константы и используйте iota для перечислений

Урок 3 из 413 шагов

«Константы и iota» — бесплатный урок Go Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.

Что такое константы

Константа хранит значение, которое не изменяется во время выполнения.

  • Объявляется с помощью const
  • Должна вычисляться во время компиляции
  • Может быть типизированной или нетипизированной
  • Допустимы строковые, логические, числовые литералы и литералы rune

Типизированные и нетипизированные константы

Нетипизированные константы обладают большей точностью и более гибки:

  • const Pi = 3.14159 — нетипизированное число с плавающей точкой, адаптируется к контексту
  • const Pi float64 = 3.14159 — типизированное значение float64
  • Нетипизированные целочисленные константы можно использовать с любым целочисленным типом

Выражения констант

Константы можно вычислять из других констант во время компиляции:

const (
    KB = 1024
    MB = 1024 * KB
    GB = 1024 * MB
)

iota: автоматически увеличивающиеся значения

iota — это встроенный счётчик, который сбрасывается до 0 в каждом блоке const и увеличивается на 1 для каждой константы в блоке.

const (
    Sunday = iota  // 0
    Monday          // 1
    Tuesday         // 2
    Wednesday       // 3
)

iota с выражениями

Комбинируйте iota с выражениями для создания мощных перечислений:

const (
    _  = iota             // skip 0
    KB = 1 << (10 * iota) // 1024
    MB                     // 1048576
    GB                     // 1073741824
)

Строковые константы

Строковые константы — это неизменяемые строковые значения, известные во время компиляции:

const (
    AppName    = "GoApp"
    AppVersion = "1.0.0"
    Greeting   = "Hello, " + AppName
)

Логические константы

true и false — предварительно объявленные нетипизированные логические константы в Go. Вы можете определять собственные константы логического типа для флагов возможностей:

const (
    EnableMetrics = true
    DebugMode     = false
)

Константы и переменные

Основные различия:

  • Константы неизменяемы — присваивание после объявления вызывает ошибку компиляции
  • В константах нельзя использовать неконстантные выражения, например вызовы функций
  • Константы эффективнее — компилятор может подставлять их значения непосредственно в код
  • Используйте константы для магических чисел, чтобы повысить читаемость

Перечисления с iota

Создавайте типобезопасные перечисления, сочетая определённый тип с iota:

type Direction int

const (
    North Direction = iota
    East
    South
    West
)

Stringer для удобочитаемости перечислений

Реализуйте интерфейс Stringer для типа перечисления, чтобы при выводе отображались понятные человеку имена, а не исходные целые числа. Инструмент stringer может автоматически сгенерировать этот код.

Шаблон битовой маски iota

iota со сдвигами битов создаёт наборы флагов:

type Permission uint

const (
    Read    Permission = 1 << iota // 1
    Write                          // 2
    Execute                        // 4
)

func main() {
    access := Read | Write // 3
    _ = access
}

Быстрая проверка

С какого значения начинается iota в каждом новом блоке const?

Повторение: константы и iota

Теперь Вы понимаете, как работают константы Go:

  • const объявляет неизменяемые значения, вычисляемые во время компиляции
  • Нетипизированные константы гибки и обладают высокой точностью
  • iota автоматически увеличивается внутри блока const, начиная с 0
  • Сочетайте iota с выражениями для задания размеров файлов, битовых флагов и перечислений
  • Создавайте типобезопасные перечисления с помощью определённого типа и iota

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

Можно начать бесплатно

Изучай Go с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
51
Уроки
203

Часто задаваемые вопросы

Урок «Константы и iota» бесплатный?

Да — полный текст урока «Константы и iota» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.

Чему я научусь в уроке «Константы и iota»?

Определяйте константы и используйте iota для перечислений Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Go Academy?

Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Константы и iota»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Go Academy?

Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Объявление переменных в Go
  2. Встроенные типы Go
  3. Константы и iota
  4. Преобразование типов в Go
← Назад к Go Academy