Re:Go 1.22 Release Notes
by KingOfCoders on Wednesday February 07, 2024 @08:04AM
(#39288040)
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.
Oh, 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.
Re:Go 1.22 Release Notes
by KingOfCoders on Wednesday February 07, 2024 @09:34AM
(#39289018)
Iterator 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
}
I should also note that the official name is "range-over-function iterators", I called it by a wrong name earlier.