Iteradores en Go: Una cuestión de pureza e impureza

2025-05-31

Go 1.23 estandarizó los iteradores, funciones potentes que pueden ser closures. Sin embargo, la clasificación de iteradores en la documentación oficial es ambigua. El autor propone una distinción más clara entre iteradores 'puros' e 'impuros': los iteradores 'puros' se reinician en cada llamada, mientras que los iteradores 'impuros' pueden retener estado. El artículo explora varios tipos de iteradores y las compensaciones entre rendimiento y consistencia, concluyendo que el panorama de iteradores de Go aún está en evolución, con convenciones y terminología que necesitan mayor refinamiento.

Leer más
Desarrollo

El Costo de Rendimiento del Abuso de panic/recover en Go

2025-03-04

Este artículo compara el rendimiento entre usar `panic` y `recover` en Go para la iteración de matrices frente a un bucle tradicional. Los resultados demuestran una penalización significativa en el rendimiento por el abuso de `panic`/`recover` para el flujo de control en conjuntos de datos más pequeños. Esto se atribuye a la inhibición de optimizaciones del compilador, como la integración en línea y la eliminación de comprobaciones de límites. Si bien `panic`/`recover` pueden ofrecer ganancias de eficiencia en el manejo de errores internos, el autor advierte contra el uso excesivo y enfatiza la importancia de mantener estos mecanismos internos a un paquete, lejos de las API públicas.

Leer más
Desarrollo