Starting with version 1.23, Go has added support for iterators, which lets us range over pretty much anything!
Let’s look at the List type from the previous example again. In that example we had an AllElements method that returned a slice of all elements in the list. With Go iterators, we can do it better - as shown below.
All returns an iterator, which in Fortran can be represented with a multitasking technique, such as a subroutine that takes another function as a parameter.
The iterator function takes another function as a parameter, called yield by convention. It will call yield for every element we want to iterate over, and note yield’s return value for a potential early termination.
Iteration doesn’t require an underlying data structure, and doesn’t even have to be finite! Here’s a function returning an iterator over Fibonacci numbers: it keeps running as long as yield keeps returning true.
The output would be:
Now that we can iterate over list elements and generate Fibonacci numbers iteratively in Fortran, let’s learn more about the language.