Itérateurs Go : une question de pureté et d'impureté

2025-05-31

Go 1.23 a standardisé les itérateurs, des fonctions puissantes pouvant être des closures. Cependant, la classification des itérateurs dans la documentation officielle est ambiguë. L'auteur propose une distinction plus claire entre les itérateurs « purs » et « impurs » : les itérateurs « purs » redémarrent à chaque appel, tandis que les itérateurs « impurs » peuvent conserver un état. L'article explore différents types d'itérateurs et les compromis entre performance et cohérence, en concluant que le paysage des itérateurs de Go est encore en évolution, les conventions et la terminologie nécessitant un raffinement supplémentaire.

Lire plus
Développement

Le coût de performance de l'abus de panic/recover en Go

2025-03-04

Cet article compare les performances entre l'utilisation de `panic` et `recover` en Go pour l'itération de tableau par rapport à une boucle traditionnelle. Les résultats montrent une pénalité de performance significative pour l'abus de `panic`/`recover` pour le contrôle de flux dans les ensembles de données plus petits. Ceci est attribué à l'inhibition des optimisations du compilateur, telles que l'intégration en ligne et l'élimination des vérifications de limites. Bien que `panic`/`recover` puissent offrir des gains d'efficacité dans la gestion des erreurs internes, l'auteur met en garde contre une utilisation excessive et souligne l'importance de maintenir ces mécanismes internes à un package, loin des API publiques.

Lire plus
Développement