Comment exécuter des tâches répétitives à intervalle régulier en Go ?
Bonjour à tous ! Je suis débutant en Go et j'écris un petit service de monitoring. J'ai besoin que toutes les 5 secondes, le programme vérifie le statut d'un serveur distant et enregistre le résultat dans un log. J'ai essayé d'utiliser `time.Sleep()` dans une boucle infinie, mais cela semble bricolé et bloque apparemment tout le programme de manière incorrecte. Voici mon code actuel :
```go
package main
import (
"fmt"
"time"
)
func main() {
for {
fmt.Println("Je vérifie le serveur...")
// ici une logique de vérification
time.Sleep(5 * time.Second)
}
}
```
Le problème est que si je veux arrêter cette boucle (par exemple, avec un signal d'arrêt du programme), je dois attendre la fin du `Sleep`. De plus, j'ai entendu dire qu'en Go il y a des goroutines et des channels, mais je ne comprends pas comment les appliquer à cette tâche.
Pouvez-vous me dire s'il existe en Go une manière standard d'effectuer des actions répétitives à intervalles réguliers ? Idéalement avec la possibilité d'un graceful shutdown. Je serais reconnaissant pour des exemples de code.