إضافة حد المحاولات و وضع verbose إلى jobrunner
في الدرس السابق أعطينا اسم المشروع و إصداره أسماء يمكن استخدامها داخل main. لكن jobrunner يحتاج الآن إلى قيم لا تشبه الاسم أو الإصدار.
نريد تحديد عدد المحاولات المسموح بها و نريد اختيار ما إذا كان البرنامج يطبع معلومات إضافية. القيمة 3 عدد نستخدمه للعد، بينما false إجابة عن سؤال له حالتان. لا يجب أن يتعامل البرنامج معهما كنصين.
كل قيمة في Go لها نوع يحدد ما تمثله و العمليات المناسبة لها. عندما نستخدم :=، تستنتج Go نوع المتغير من القيمة التي نعطيها له.
name := "jobrunner" // string
maxAttempts := 3 // int
verbose := false // boolالقيمة بين علامتي اقتباس هي string و العدد الصحيح مثل 3 هو int و true أو false هي bool. أما العدد الذي له جزء عشري، مثل 1.5 فنوعه float64 و لا يحتاجه jobrunner لأن كل أعداده صحيحة.
بهذه الأنواع نمثل اسم البرنامج و عدد محاولاته و حالة الوضع التفصيلي من دون تحويلها إلى نصوص لا تميز معانيها.
تحديث jobrunner
سنضيف عدد المحاولات و خيار الوضع التفصيلي إلى jobrunner.
package main
import "fmt"
func main() {
name := "jobrunner"
version := "v0.1"
maxAttempts := 3
verbose := false
fmt.Println(name, version)
fmt.Println("a tiny CLI for running jobs")
fmt.Println("max attempts:", maxAttempts)
fmt.Println("verbose:", verbose)
}عند تشغيل البرنامج ستظهر المخرجات التالية:
jobrunner v0.1
a tiny CLI for running jobs
max attempts: 3
verbose: falseأصبح jobrunner الآن يميز بين نص و عدد و حالة تشغيل. لا نكتب النوع بعد :=، لكن Go تحتفظ بالنوع الذي استنتجته للمتغير. لذلك لا يمكن أن نضع رقما في name أو نصا في verbose لاحقا.
التحدي
في المحرر افتح ملف main.go و أضف المتغيرين التاليين:
maxAttemptsو قيمته3verboseو قيمتهfalse
بعدها اطبعهما بالشكل التالي:
jobrunner v0.1
a tiny CLI for running jobs
max attempts: 3
verbose: falseشغل البرنامج باستخدام:
go run main.goثم اضغط على زر تشغيل و تحقق بعد ظهور النتيجة الصحيحة.
الخلاصة
تحتاج القيم إلى أنواع تناسب معناها. استخدمنا string لاسم jobrunner و int لعدد المحاولات و bool لخيار الوضع التفصيلي.
أنشأنا هذه المتغيرات بقيم أولية. لكن ماذا يحدث عندما نعلن متغيرا دون قيمة؟