3 ms·
Yes might depend on where you come from. As someone with decades of Java experience - not a fancy language over most of its lifecycle - I was mystified why ther
by KingOfCoders 3y ago
Yes might depend on where you come from. As someone with decades of Java experience - not a fancy language over most of its lifecycle - I was mystified why there is no Iterator support as in Java for loops.
- simiones 3y agoOh, now I understand what you mean - you're thinking of this as a way to do `for (T x : collection)` in Java. I see this as more like the `yield return` functions of C#, which I definitely wasn't expecting. That can of course also be used to implement an iterator for a collection, but it seems much more general. Given that before generics Go had exactly 3 types of collections, and that those were all iterable with range, I guess I never thought about this thing missing from the for loop.
- KingOfCoders 3y agoIterator is not only about collections. Its not as powerful as a yield around continuations but you can return whatever you like. ~15 (?) years ago I wrote a "famous" blog post on how to use Iterator as a poor man Maybe/Option. for (String s: m Option<String>) { // Executed on Some }
- EE84M3i 3y agoAn idomatic way to do this now is to start a goroutine and range over a channel it writes to. Less ergonomic and more error prone, but it works.