كيفية تنفيذ المهام المتكررة بفاصل زمني محدد في Go؟
مرحبًا بالجميع! أنا مبتدئ في Go وأكتب خدمة صغيرة للمراقبة. أحتاج إلى أن يتحقق البرنامج كل 5 ثوانٍ من حالة الخادم البعيد ويسجل النتيجة في السجل. حاولت استخدام `time.Sleep()` في حلقة لا نهائية، لكن هذا يبدو حلاً غير أنيق ويبدو أنه يحظر البرنامج بأكمله بشكل غير صحيح. إليك الكود الحالي الخاص بي:
```go
package main
import (
"fmt"
"time"
)
func main() {
for {
fmt.Println("جارٍ التحقق من الخادم...")
// هنا بعض منطق التحقق
time.Sleep(5 * time.Second)
}
}
```
المشكلة هي أنني إذا أردت إيقاف هذه الحلقة (على سبيل المثال، بإشارة إنهاء البرنامج)، فسأضطر إلى انتظار انتهاء `Sleep`. بالإضافة إلى ذلك، سمعت أن Go يحتوي على goroutines وقنوات، لكنني لا أفهم كيفية تطبيقها لهذه المهمة.
أرجو إرشادي، هل هناك طريقة قياسية في Go لتنفيذ إجراءات متكررة على فترات زمنية متساوية؟ ويفضل أن يكون ذلك مع إمكانية الإغلاق اللطيف (graceful shutdown). سأكون ممتنًا لأمثلة الكود.