Итераторы в Go: range-over-func и пакет iter
Go 1.23 разрешил range по функции: iter.Seq и iter.Seq2 — это функции-«пуш-итераторы», которые получают yield и вызывают его на каждом элементе. Как это работает под капотом, как писать свои итераторы, как связаны slices/maps-итераторы, ранний break и очистка — на живых примерах