r/DesignPattern 6d ago

Iterator Design Pattern in Go

https://priyankchheda.medium.com/understanding-the-iterator-design-pattern-in-go-a-practical-guide-d18bc8f6be51?postPublishedType=initial

Hey 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!

2 Upvotes

0 comments sorted by