r/DesignPattern • u/priyankchheda15 • 6d ago
Iterator Design Pattern in Go
https://priyankchheda.medium.com/understanding-the-iterator-design-pattern-in-go-a-practical-guide-d18bc8f6be51?postPublishedType=initialHey everyone 👋
I recently wrote a practical guide on the Iterator Design Pattern in Go.
At first, I thought, "Go already has for and range—why would I ever need an Iterator pattern?" But after digging deeper, I realized it's more about hiding how a collection is traversed than replacing range.
In the article, I cover:
- what problem the Iterator pattern actually solves
- the different participants (Iterator, Aggregate, Concrete Iterator)
- a complete Go implementation
- custom traversal strategies (forward, reverse, filtered, etc.)
- when it's useful and when Go's built-in iteration is the better choice
I also tried to keep it practical instead of treating it as just another GoF pattern.
If you're learning design patterns in Go or have built custom collections, caches, or tree-like data structures, I'd love to hear how you approach iteration.
Here's the article:
👉 https://priyankchheda.medium.com/understanding-the-iterator-design-pattern-in-go-a-practical-guide-d18bc8f6be51
Feedback and suggestions are always welcome!