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