如何在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中是否有标准方法可以每隔固定时间执行重复操作?最好能支持优雅关闭。感谢提供代码示例。