golang-goroutines
Installation
SKILL.md
Golang Goroutines
Toda goroutine precisa de um dono, um fim e um caminho de erro. Preferir context para cancelamento a signals ad hoc.
Quando usar
- Paralelizar I/O independente (fan-out) com limite de concorrência.
- Pipelines com stages claros e backpressure.
- Trabalho em background ligado ao lifecycle do processo ou do request.
- Não use goroutine para “deixar o handler retornar mais rápido” sem ownership do lifecycle.
Regras inegociáveis
- Derive contexts:
context.WithCancel/WithTimeout/WithDeadlinea partir do parent. - Cancele e
Wait(ou equivalente) antes de retornar em funções que spawnam trabalho. - Nunca ignore o valor de retorno de erros de goroutines filhas.
- Channels: defina quem fecha; receivers não fecham o que não possuem.
- Dados compartilhados:
mutex, channels ou estruturas concorrentes — escolha uma estratégia, não as duas às cegas. - Sem
go func()em loop capturando variável de iteração sem binding explícito (v := v).