В этом уроке:
Автор видео начинает с разграничения классического поведенческого паттерна Iterator и подхода, который используется в Golang. Если в ООП-мирах итератор — это объект с методами вроде HasNext/Next, то в Go упор делается на простые протоколы обхода и функции как источники значений, что сокращает накладные расходы и упрощает чтение кода.
Затем обсуждаются итераторы, характерные именно для Golang: "pull"-итераторы (потребитель запрашивает следующий элемент, чаще всего как Next () (T, bool)) и "push"-итераторы (производитель «толкает» значения в переданную колбэк-функцию). Поясняется, как выбрать модель под задачу: «pull» удобен для пошагового чтения и досрочного завершения, «push» — для конвейеров и трансформаций. Автор отдельно разбирает обработку ошибок и паник во время обхода: где уместен второй возвращаемый результат error, когда логичнее прерывать итерацию, и как безопасно использовать defer/recover.
Отдельный блок — новшества экосистемы вокруг Go: рассматривается пакет iter и то, как он формализует общие шаблоны итерации; показывается, что для стандартных коллекций (slices, maps) появляются удобные вспомогательные итераторы. Акцент — на читаемости и предсказуемости сигнатур, единых naming-conventions и совместимости с уже привычным for … range.
Практическая часть урока насыщенная, потому что автор:
Урок будет особенно полезен, если ты:
Для просмотра урока необходимо минимальное знание базовых коллекций Golang, ошибок (error), defer/recover, умение читать простые бенчмарки.
Теги: итераторы go, итераторы golang, урок по golang. итератор. iterator pattern. golang. программирование. iterators. итераторы. go итераторы. golang итераторы. pull итераторы. push итераторы. golang 1.23. go iterators. go. golang iter. язык программирования go. iterator. golang уроки. golang course. golang 1.23 iter. golang 1.23 iterators. go язык программирования. golang tutorial. язык go. go lang. golang iterator functions. go iter. go 1.23 iterators. программирование на go.
- 00:00 — Введение
- 01:16 — Особенности и нюансы итераторов в Go
- 03:21 — Поведенческий паттерн итератор
- 07:56 — Итераторы в Go
- 15:48 — Пакет iter в Go
- 21:12 — Итераторы в пакетах slices и maps
- 22:21 — Бенчмарки с итераторами
- 23:53 — Связный список с итераторами
- 26:00 — Naming conventions для итераторов
- 27:16 — Бинарные деревья с итераторами
- 29:37 — Сканер с итератором
- 31:33 — Пагинация на итераторах
- 34:50 — Функциональное программирование с итераторами
- 39:37 — Пайплайны на итераторах
- 44:22 — Трансформации с итераторами
- 45:48 — Итераторы для вычисления чисел фибоначчи
- 47:19 — Push и pull итераторы
- 51:31 — Обработка ошибок во время итерации
- 54:55 — Паники во время итерации
- 01:02:23 — Внутреннее устройство push итераторов
- 01:04:51 — Внутреннее устройство pull итераторов
Автор видео начинает с разграничения классического поведенческого паттерна Iterator и подхода, который используется в Golang. Если в ООП-мирах итератор — это объект с методами вроде HasNext/Next, то в Go упор делается на простые протоколы обхода и функции как источники значений, что сокращает накладные расходы и упрощает чтение кода.
Затем обсуждаются итераторы, характерные именно для Golang: "pull"-итераторы (потребитель запрашивает следующий элемент, чаще всего как Next () (T, bool)) и "push"-итераторы (производитель «толкает» значения в переданную колбэк-функцию). Поясняется, как выбрать модель под задачу: «pull» удобен для пошагового чтения и досрочного завершения, «push» — для конвейеров и трансформаций. Автор отдельно разбирает обработку ошибок и паник во время обхода: где уместен второй возвращаемый результат error, когда логичнее прерывать итерацию, и как безопасно использовать defer/recover.
Отдельный блок — новшества экосистемы вокруг Go: рассматривается пакет iter и то, как он формализует общие шаблоны итерации; показывается, что для стандартных коллекций (slices, maps) появляются удобные вспомогательные итераторы. Акцент — на читаемости и предсказуемости сигнатур, единых naming-conventions и совместимости с уже привычным for … range.
Практическая часть урока насыщенная, потому что автор:
- проводит бенчмарки, сравнивая циклы, каналы и разные виды итераторов;
- демонстрирует, как построить итераторы для связанных списков и бинарных деревьев, как сделать итератор-сканер и организовать пагинацию постраничной выборки из внешнего источника.
Урок будет особенно полезен, если ты:
- junior-разработчик, уже уверенно пишешь for … range, но хочешь понять, когда нужны «функции-итераторы», чем они отличаются от каналов и как не наделать лишних аллокаций.
- middle-разработчик, который упирается в производительность: где каналы избыточны, как проектировать Next () (T, bool)/func (yield func (T) bool)-подходы, как замерять и выбирать вариант по бенчмаркам.
- разработчик, пришедший из ООП-языков (Java/C#): тебе будет полезно переосмыслить классический паттерн Iterator на «гошный» лад и понять идиоматичные сигнатуры вместо HasNext/Next.
- backeng-инженер и автор сервисов с потоковой обработкой, кому нужны конвейеры (pipelines), ленивые преобразования, ограничение памяти и аккуратная остановка по условию/ошибке.
Для просмотра урока необходимо минимальное знание базовых коллекций Golang, ошибок (error), defer/recover, умение читать простые бенчмарки.
Теги: итераторы go, итераторы golang, урок по golang. итератор. iterator pattern. golang. программирование. iterators. итераторы. go итераторы. golang итераторы. pull итераторы. push итераторы. golang 1.23. go iterators. go. golang iter. язык программирования go. iterator. golang уроки. golang course. golang 1.23 iter. golang 1.23 iterators. go язык программирования. golang tutorial. язык go. go lang. golang iterator functions. go iter. go 1.23 iterators. программирование на go.