На этом открытом уроке за 1,5 часа мы разберем интерфейсы и дженерики в Go от «А» до «Я» — как они устроены под капотом, зачем нужны итераторы и как писать гибкий код без потери производительности.
В этом уроке:
В итоге у тебя будет полное понимание того, как эффективно использовать систему типов Go: ты научишься проектировать чистые API с помощью интерфейсов и писать универсальные алгоритмы на дженериках, не допуская типичных ошибок новичков.
В этом уроке:
- Методы и ресиверы: в чем разница между Value и Pointer ресиверами, и как это влияет на копирование данных и память.
- Интерфейсы под капотом: детальный разбор структур iface и eface, виртуальные таблицы методов и накладные расходы на динамический полиморфизм.
- Дженерики (Type Parameters): как работают type sets, что такое comparable и почему Go генерирует отдельный код для каждого типа (мономорфизация).
- Работа с коллекциями: нюансы работы с хэш-мапами, создание сетов и использование пакетов slices, maps и cmp.
- Итераторы в Go 1.23: глубокое погружение в iter.Seq, разница между Push и Pull итераторами и как они упрощают обход сложных структур данных.
- Анализ бинарников: смотрим, как дженерики влияют на размер исполняемого файла и скорость компиляции.
В итоге у тебя будет полное понимание того, как эффективно использовать систему типов Go: ты научишься проектировать чистые API с помощью интерфейсов и писать универсальные алгоритмы на дженериках, не допуская типичных ошибок новичков.