MASTRILOالدورة/قبول أنواع محددة من المهام
MASTRILO

قبول أنواع محددة من المهام

في الدرس السابق تحققنا من وجود jobName. بقي سؤال آخر: هل jobType من الأنواع التي يدعمها jobrunner؟

لدينا أكثر من نوع مدعوم لذلك لا نريد سلسلة طويلة من المقارنات. نريد مقارنة jobType بمجموعة حالات واضحة.

go
switch jobType {
case "email", "report":
	fmt.Println("job ok:", jobName, "-", jobType)
default:
	fmt.Println("invalid job: unknown type", jobType)
}

تختبر switch قيمة واحدة مقابل حالات case. تنفذ Go أول حالة تطابق القيمة. وإذا لم تطابق القيمة أي حالة، تنفذ default.

تحديث jobrunner

يدعم jobrunner حاليا نوعين فقط:

  • email
  • report

أي قيمة أخرى يجب اعتبارها غير صالحة.

go
func main() {
	name := "jobrunner"
 
	jobName := "send welcome email"
	jobType := "email"
 
	fmt.Println(name, version)
	fmt.Println("max attempts:", maxAttempts)
 
	if jobName == "" {
		fmt.Println("invalid job: name is empty")
		return
	}
 
	switch jobType { 
	case "email", "report": 
		fmt.Println("job ok:", jobName, "-", jobType) 
	default: 
		fmt.Println("invalid job: unknown type", jobType) 
		return
	} 
}

شغل البرنامج باستخدام:

bash
go run main.go

ستلاحظ أن المهمة صحيحة لأن jobType يساوي email. غير jobType إلى "sms" ثم شغل البرنامج مرة أخرى. ستلاحظ أن switch سينتقل إلى default لأن هذا النوع غير مدعوم.

أصبح jobrunner الآن يتحقق من اسم المهمة و نوعها قبل البدء في تنفيذها.

رسم لمسار switch: email و report يتابعان و النوع غير المدعوم يصل الى default ثم return
توجه switch المهمة حسب نوعها: الأنواع المدعومة تتابع و غير المدعوم يتوقف عند return.

التحدي

في المحرر، افتح ملف main.go و أضف عملية تحقق لنوع المهمة باستخدام switch.

  • إذا كان النوع email أو report، اطبع:
text
job ok: <job name> - <job type>
  • أما إذا كان النوع غير معروف فاطبع:
text
invalid job: unknown type <job type>

بعدها شغل البرنامج باستخدام:

bash
go run main.go

بما أن نوع المهمة الحالي هو email، سيطبع البرنامج سطر job ok. تأكد أن المخرجات مطابقة تماما ثم اضغط على زر تشغيل و تحقق لإكمال الدرس.

بعد إكمال الدرس، جرب تغيير قيمة jobType إلى نوع آخر مثل "sms" و لاحظ كيف ينتقل switch إلى default.

الخلاصة

أصبح jobrunner الآن يتحقق من أكثر من شرط قبل تنفيذ المهمة.

تعلمت استخدام switch لاختيار مسار التنفيذ من بين عدة احتمالات، كما تعرفت على default للتعامل مع الحالات غير المتوقعة.

في الدرس القادم سنستخدم الحلقة for لتكرار تنفيذ جزء من البرنامج.

اختبر معلوماتك

سجّل دخولك للإجابة على الأسئلة وحفظ تقدّمك.

سجّل الدخول
اللوحات
نوع الخط
حجم الخط
أكملت 0 من 69 درس

Control Flow

2.قبول أنواع محددة من المهام

Learn Go by Building a CLI1369 قبول أنواع محددة من المهاممكافأة إكمال الدرس إضافة إلى نقاط أنشطته. 10 XP. تُمنح المكافأة مرة واحدة فقط.