Iteradores Go: Uma Questão de Pureza e Impureza

2025-05-31

O Go 1.23 trouxe iteradores padronizados, funções poderosas que podem ser closures. No entanto, a classificação de iteradores na documentação oficial é ambígua. O autor propõe uma distinção mais clara entre iteradores 'puros' e 'impurezas': iteradores 'puros' reiniciam a cada chamada, enquanto iteradores 'impurezas' podem reter estado. O artigo explora vários tipos de iteradores e as compensações entre desempenho e consistência, concluindo que o cenário de iteradores do Go ainda está em evolução, com convenções e terminologia precisando de maior refinamento.

Leia mais
Desenvolvimento

O Custo de Desempenho do Abuso de panic/recover em Go

2025-03-04

Este artigo compara o desempenho entre usar `panic` e `recover` em Go para iteração de array versus um loop tradicional. Os resultados demonstram uma penalidade significativa de desempenho para o abuso de `panic`/`recover` para fluxo de controle em conjuntos de dados menores. Isso é atribuído à inibição de otimizações do compilador, como inlining e eliminação de verificação de limites. Embora `panic`/`recover` possam oferecer ganhos de eficiência no tratamento de erros internos, o autor adverte contra o uso excessivo e enfatiza a importância de manter esses mecanismos internos a um pacote, longe das APIs públicas.

Leia mais
Desenvolvimento