À partir de la version 1.23, ce langage a ajouté le support pour les itérateurs, ce qui nous permet de parcourir quasiment tout !
Voyons de nouveau le type List de l’exemple précédent. Dans cet exemple, nous avions une méthode AllElements qui renvoyait une slice de tous les éléments de la liste. Avec les itérateurs, nous pouvons faire mieux, comme illustré ci-dessous.
Pour itérer sur tous les éléments, nous pouvons utiliser la fonction all de la liste, qui renvoie un itérateur.
Les packages comme Array ont un certain nombre de fonctions utiles pour travailler avec des itérateurs. Par exemple, Array prend n’importe quel itérateur et collecte toutes ses valeurs dans une array.
Il est aussi possible de créer un itérateur infini, comme celui pour les nombres de Fibonacci ci-dessous :
Une fois que la boucle atteint break ou un retour anticipé, la fonction yield passée à l’itérateur retournera false.