Avatar ·

Como parar corretamente uma goroutine em Go? Problemas com encerramento de tarefas em segundo plano

Olá a todos! Sou um desenvolvedor Go iniciante e estou tendo um problema com o gerenciamento de goroutines. Estou escrevendo um pequeno serviço que verifica periodicamente o estado de uma API externa e atualiza o cache local. Para isso, executo uma goroutine em segundo plano com um loop infinito e time.Sleep. O problema é que, ao encerrar o programa (por exemplo, com Ctrl+C) ou quando preciso reiniciar a goroutine, não consigo pará-la corretamente. Se eu simplesmente encerrar o main, a goroutine continua pendurada ou entra em pânico. Tentei usar uma flag global `var running bool` e verificá-la no loop, mas isso não funciona instantaneamente, e às vezes a goroutine fica bloqueada em operações de I/O. Aqui está um exemplo do meu código: ```go package main import ( "fmt" "time" ) func worker() { for { fmt.Print