News for hackers. Stuff that matters.
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.
Re:Go 1.22 Release Notes by simiones on Wednesday February 07, 2024 @08:36AM (#39288353)
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
   }
Re:Go 1.22 Release Notes by EE84M3i on Wednesday February 07, 2024 @06:33PM (#39295778)
An 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.