تخزين بيانات jobrunner في متغيرات
في الدرس السابق كتبنا أول إصدار من jobrunner.
package main
import "fmt"
func main() {
fmt.Println("jobrunner v0.1")
fmt.Println("a tiny CLI for running jobs")
}اسم المشروع و إصداره مكتوبان مباشرة داخل الكود. نطبعهما اليوم مرة واحدة، لكننا قد نحتاج إلى طباعتهما في أسطر أخرى داخل main مع تطور jobrunner. إذا تغير الإصدار، لا نريد البحث عن النص نفسه كلما احتجنا إلى استخدامه.
نحتاج إلى اسم يحمل كل قيمة، حتى نستخدم الاسم في الأسطر التي تحتاجها داخل main و نغير القيمة من مكان واحد.
name := "jobrunner"
version := "v0.1"هنا يحمل name اسم المشروع و يحمل version إصداره. الاسم المرتبط بقيمة يسمى متغير.
الصيغة := تنشئ المتغير و تعطيه قيمة في السطر نفسه. تستنتج Go نوع المتغير هنا من القيمة و سنتعرف على هذه الأنواع في الدرس القادم.
تحديث jobrunner
سنربط اسم المشروع و إصداره بمتغيرين ثم نطبعهما بدل النص المكتوب مباشرة.
package main
import "fmt"
func main() {
name := "jobrunner"
version := "v0.1"
fmt.Println(name, version)
fmt.Println("a tiny CLI for running jobs")
}المخرجات لم تتغير، لكن name و version أصبحا جزءا واضحا من البرنامج. عندما نحتاج اسم المشروع أو إصداره لاحقا، نستخدم المتغير المناسب. و إذا تغير الإصدار، نغير قيمته مرة واحدة.

إذا أنشأت متغيرا داخل دالة و لم تستخدمه، سترفض Go بناء البرنامج. هذا يمنع الأسماء غير الضرورية من البقاء في الكود.
التحدي
في المحرر، افتح ملف main.go و استبدل القيم المكتوبة مباشرة بمتغيرين باستخدام :=:
nameوقيمته"jobrunner"versionوقيمته"v0.1"
بعدها اطبع المتغيرين معا في السطر الأول، بحيث تصبح المخرجات النهائية:
jobrunner v0.1
a tiny CLI for running jobsثم في الطرفية (Terminal) أسفل المحرر، شغل البرنامج باستخدام:
go run main.goعندما تظهر النتيجة الصحيحة، اضغط على زر تشغيل و تحقق لإكمال الدرس.
لن تختلف المخرجات عن الدرس السابق. ما تغير هو أن اسم المشروع و إصداره أصبحا قيمتين لهما أسماء يمكن استخدامهما لاحقا.
الخلاصة
المتغير اسم نربطه بقيمة. في jobrunner يمثل name اسم المشروع و يمثل version إصداره لذلك نستطيع استخدام القيمتين في أكثر من موضع و تغيير كل واحدة من مكان واحد.
استخدمنا := لإنشاء المتغير و إعطائه قيمته. لكن ما أنواع القيم التي يمكن أن يحملها المتغير؟