Avatar ·

¿Cómo ejecutar tareas repetitivas con un intervalo dado en Go?

¡Hola a todos! Soy nuevo en Go y estoy escribiendo un pequeño servicio de monitoreo. Necesito que cada 5 segundos el programa verifique el estado de un servidor remoto y registre el resultado en un log. Probé usar `time.Sleep()` en un bucle infinito, pero parece improvisado y, creo, bloquea incorrectamente todo el programa. Aquí está mi código actual: ```go package main import ( "fmt" "time" ) func main() { for { fmt.Println("Verificando servidor...") // aquí alguna lógica de verificación time.Sleep(5 * time.Second) } } ``` El problema es que si quiero detener este bucle (por ejemplo, por una señal de finalización del programa), tendré que esperar a que termine el `Sleep`. Además, he oído que en Go hay goroutines y channels, pero no entiendo cómo aplicarlos para esta tarea. ¿Podrían indicarme si hay una forma estándar en Go de ejecutar acciones repetitivas a intervalos regulares? Preferiblemente con posibilidad de graceful shutdown. Agradeceré ejemplos de código.