بدء 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 لا توجد رسالة خطأ أخيرة بعد. ما القيمة التي نضعها في lastError؟
لا نحتاج إلى اختراع قيمة. عندما نعلن متغيرا دون إسناد قيمة له، تعطيه Go قيمة مناسبة لنوعه منذ البداية. لهذه القيمة اسم: Zero Value.
var lastError stringبما أن lastError نص، تبدأ قيمته بنص فارغ "". و بالطريقة نفسها يبدأ int بالقيمة 0 و يبدأ bool بالقيمة false. نوع المتغير يحدد ما يمكنه تخزينه، كما يحدد قيمة البداية عندما لا نكتبها بأنفسنا.

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