Avatar ·

如何在Go中按指定间隔执行重复任务?

大家好!我是Go新手,正在编写一个小的监控服务。我需要程序每5秒检查一次远程服务器的状态,并将结果记录到日志中。我尝试在无限循环中使用`time.Sleep()`,但这看起来像临时方案,而且似乎会错误地阻塞整个程序。以下是我当前的代码: ```go package main import ( "fmt" "time" ) func main() { for { fmt.Println("正在检查服务器...") // 这里有一些检查逻辑 time.Sleep(5 * time.Second) } } ``` 问题在于,如果我想停止这个循环(例如,通过程序终止信号),就必须等待`Sleep`结束。此外,我听说Go中有goroutine和channel,但不知道如何将它们应用于这个任务。 请问Go中是否有标准方法可以每隔固定时间执行重复操作?最好能支持优雅关闭。感谢提供代码示例。