Практика: 6 коротких упражнений, чтобы iota реально закрепилась
Ниже небольшой практический блок, чтобы статья работала не только как объяснение, но и как нормальная тренировка.
Упражнение 1. Базовый счётчик
Что тренируем: базовую механику iota.
Задача: Объяви три константы через iota, чтобы они получили значения 0, 1, 2.
Упражнение 2. Начало с единицы
Что тренируем: арифметику с iota.
Задача: Сделай три константы, которые через iota будут равны 1, 2, 3.
Упражнение 3. Пропуск значения
Что тренируем: пустой идентификатор _.
Задача: Создай последовательность, где значения будут 1, 3, 4, а число 2 будет пропущено.
Упражнение 4. Enum-подобный тип
Что тренируем: type + const + iota.
Задача: Создай тип LogLevel и значения Debug, Info, Warn, Error.
Упражнение 5. String для enum
Что тренируем: человекочитаемый вывод.
Задача: Добавь к LogLevel метод String(), чтобы при печати уровни выводились как слова, а не числа.
Упражнение 6. Битовые флаги
Что тренируем: 1 << iota.
Задача: Сделай флаги Read, Write, Delete, объедини Read | Write и проверь, что флаг Write включён.
Мини-шаблоны, которые стоит унести в работу
Базовая последовательность:
const (
A = iota
B
C
)
Старт с единицы:
const (
A = iota + 1
B
C
)
Пропуск значения:
const (
A = iota + 1
_
C
)
Enum в Go:
type Status int
const (
Pending Status = iota
Active
Closed
)
Битовые флаги:
const (
Read = 1 << iota
Write
Delete
)
Как самому проверить, что тема реально улеглась
После практики попробуй без подсказки ответить:
- Где вообще можно использовать iota?
- Почему в новом const она снова становится нулём?
- Почему можно не писать выражение на каждой строке?
- Чем enum через iota лучше набора голых int?
- Почему 1 << iota даёт степени двойки?
- Когда iota делает код лучше, а когда хуже?
Если на всё это отвечаешь спокойно, значит тема усвоена.
Зачем вообще хорошо понимать iota, если это кажется мелкой фишкой
iota — хороший пример маленькой темы, на которой очень быстро видно качество базы.
Если человек не до конца понимает:
- как устроены константы в Go
- что такое блок const
- как работает автоповтор выражения
- как делать enum-подобные типы
- как работают битовые флаг
то это всплывает и в коде, и на собеседовании.
В реальности важна плотная база, умение не путаться в фундаменте и навык объяснять простые вещи спокойно и точно. Именно такие маленькие темы часто решают, выглядит человек как тот, кто реально понимает язык, или как тот, кто просто листал примеры.