حاليًا، تُعد الأدوات الموجودة في سلسلة أدوات Go الرسمية (التي سنسميها فيما بعد سلسلة أدوات Go) أكثر الأدوات استخدامًا لتطوير مشاريع Go. في سلسلة مقالات Go 101، تُصرَّف جميع الأمثلة ويُتحقق منها باستخدام مصرِّف Go القياسي الموفَّر في سلسلة أدوات Go.
ستقدّم هذه المقالة كيفية إعداد بيئة تطوير Go وكيفية استخدام أمر go الموفَّر في سلسلة أدوات Go. كما ستقدّم بعض الأدوات الأخرى خارج سلسلة أدوات Go.
تثبيت سلسلة أدوات Go
يُرجى تنزيل سلسلة أدوات Go وتثبيتها باتباع التعليمات المعروضة في صفحة التنزيل.
يمكنك أيضًا استخدام أداة GoTV لإدارة تثبيتات إصدارات متعددة من سلسلة أدوات Go واستخدامها معًا بانسجام ويُسر.
يتوافق إصدار سلسلة أدوات Go مع أعلى إصدار للغة Go يدعمه ذلك الإصدار. على سبيل المثال، تدعم سلسلة أدوات Go 1.25.x جميع إصدارات لغة Go من 1.0 حتى Go 1.25.
يجب وضع المسار إلى المجلد الفرعي bin الواقع في مسار جذر تثبيت سلسلة أدوات Go ضمن متغير البيئة PATH لتنفيذ الأدوات (عبر أمر go) الموفَّرة في سلسلة أدوات Go دون إدخال مساراتها الكاملة. إذا ثُبِّتت سلسلة أدوات Go عبر برنامج تثبيت أو باستخدام مدير حزم، فربما يكون المسار إلى المجلد الفرعي bin قد ضُبِط تلقائيًا في متغير البيئة PATH نيابةً عنك.
تدعم إصدارات سلسلة أدوات Go الحديثة ميزة تُسمى الوحدات (modules) لإدارة اعتماديات المشروع. قُدِّمت هذه الميزة تجريبيًا في الإصدار 1.11 وفُعِّلت افتراضيًا منذ الإصدار 1.16.
هناك متغير بيئة، GOPATH، ينبغي أن تكون على دراية به، وإن لم تكن بحاجة إلى الاهتمام به كثيرًا. قيمته الافتراضية هي المسار إلى مجلد go تحت المجلد الرئيسي للمستخدم الحالي. قد يُدرج متغير البيئة GOPATH مسارات متعددة إذا حُدِّد يدويًا. لاحقًا، عندما يُذكر مجلد GOPATH، فالمقصود هو المجلد عند المسار الأول في متغير البيئة GOPATH.
- يُستخدم المجلد الفرعي
pkgتحت مجلدGOPATHلتخزين النسخ المخزَّنة مؤقتًا من وحدات Go (ووحدة Go هي مجموعة من حزم Go) التي تعتمد عليها مشاريع Go المحلية. - هناك متغير البيئة
GOBINالذي يتحكم في المكان الذي ستُخزَّن فيه الملفات الثنائية لبرامج Go الناتجة عن الأمر الفرعيgo install. القيمة الافتراضية لمتغير البيئةGOBINهي المسار إلى المجلد الفرعيbinتحت مجلدGOPATH. ينبغي ضبط مسارGOBINفي متغير البيئةPATHإذا أردت تشغيل الملفات الثنائية لبرامج Go الناتجة دون تحديد مساراتها الكاملة.
أبسط برنامج Go
اكتب مثالًا بسيطًا وتعلّم كيفية تشغيل برامج Go البسيطة.
البرنامج التالي هو أبسط برنامج Go.
package main
func main() {
}
الكلمتان package وfunc هما كلمتان مفتاحيتان. وكلمتا main هما معرّفان. تُقدَّم الكلمات المفتاحية والمعرّفات في مقال قادم.
يحدد السطر الأول package main اسم الحزمة (وهو main هنا) للملف المصدري الحاوي.
السطر الثاني سطر فارغ لتحسين قابلية القراءة.
تُعرّف الشيفرة المتبقية دالة تُسمى أيضًا main. وتحدد دالة main هذه في حزمة main نقطة دخول البرنامج. (لاحظ أن بعض شيفرة المستخدم الأخرى قد تُنفَّذ قبل استدعاء دالة main.)
تشغيل برامج Go
تشترط سلسلة أدوات Go أن يكون امتداد ملف شيفرة Go المصدري .go. هنا، افترض أن الشيفرة المصدرية أعلاه محفوظة في ملف باسم simplest-go-program.go.
افتح طرفية وغيّر المجلد الحالي إلى المجلد الذي يحتوي على الملف المصدري أعلاه، ثم شغّل
$ go run simplest-go-program.go
لا شيء يُخرَج؟ نعم، هذا البرنامج لا يُخرج شيئًا.
إذا وُجدت بعض الأخطاء النحوية في الشيفرة المصدرية، فستُبلَّغ هذه الأخطاء كأخطاء تصريف.
إذا كانت هناك ملفات مصدرية متعددة في حزمة main لبرنامج ما، فينبغي أن تشغّل البرنامج بالأمر التالي
$ go run .
لاحظ،
- لا يُنصح باستخدام أمر
go runلتصريف مشاريع Go الكبيرة وتشغيلها. فهو مجرد طريقة مريحة لتشغيل برامج Go البسيطة، مثل تلك الواردة في مقالات Go 101. أما لمشاريع Go الكبيرة، فيُرجى استخدام الأمرينgo buildأوgo installللبناء ثم تشغيل الملفات الثنائية القابلة للتنفيذ بدلًا من ذلك. - يحتاج كل مشروع Go رسمي يدعم وحدات Go إلى ملف
go.modموجود في المجلد الجذر لذلك المشروع. ويمكن توليد ملفgo.modبالأمر الفرعيgo mod init(انظر أدناه). - تتجاهل سلسلة أدوات Go الملفات المصدرية التي تبدأ بـ
_أو..
المزيد من الأوامر الفرعية لـ go
الأوامر الثلاثة go run وgo build وgo install لا تُخرج سوى أخطاء نحوية في الشيفرة (إن وُجدت). وهي لا تُخرج (ولا تحاول إخراج) تحذيرات الشيفرة (أي أخطاء منطق الشيفرة المحتملة). يمكنك استخدام أمر go vet لفحص هذه التحذيرات والإبلاغ عنها.
يمكنك (وينبغي لك غالبًا) استخدام أمر go fmt لتنسيق شيفرة Go المصدرية بأسلوب برمجي متسق.
يمكنك استخدام أمر go test لتشغيل الاختبارات وقياسات الأداء.
يمكنك استخدام أمر go doc لعرض توثيق Go في نوافذ الطرفية.
يُوصى بشدة بأن تجعل مشاريع Go لديك تدعم ميزة وحدات Go لتسهيل إدارة الاعتماديات. وبالنسبة للمشاريع التي تدعم وحدات Go،
- يُستخدم الأمر
go mod init example.com/myprojectلتوليد ملفgo.modفي المجلد الحالي، الذي سيُعتبر المجلد الجذر لوحدة تُسمىexample.com/myproject. سيُستخدم ملفgo.modلتسجيل اعتماديات الوحدة. يمكنك تحرير ملفgo.modيدويًا أو ترك الأوامر الفرعيةgoتحدّثه. - يُستخدم الأمر
go mod tidyلإضافة اعتماديات الوحدات المفقودة إلى ملفgo.modوإزالة اعتماديات الوحدات غير المستخدمة منه، وذلك بتحليل كل الشيفرة المصدرية للمشروع الحالي. - يُستخدم الأمر
go getلإضافة/ترقية/تخفيض/إزالة اعتمادية واحدة. ويُستخدم هذا الأمر أقل من الأمرgo mod tidy.
بدءًا من سلسلة أدوات Go 1.16، يمكنك تشغيل go install example.com/program@latest لتثبيت أحدث إصدار من برنامج Go تابع لجهة خارجية (في مجلد GOBIN). قبل سلسلة أدوات Go 1.16، كان الأمر المقابل هو go get -u example.com/program، الذي أصبح الآن مهملًا.
يمكنك استخدام الأمر go help aSubCommand لعرض رسالة المساعدة لأمر فرعي محدد.
شغّل أمر go دون أي معطيات لعرض الأوامر الفرعية المدعومة.
لن تشرح سلسلة مقالات Go 101 المزيد عن كيفية استخدام الأدوات الموفَّرة في سلسلة أدوات Go. يُرجى قراءة التوثيق الرسمي للتفاصيل.
عرض توثيق حزم Go في المتصفحات
يمكنك استخدام أداة عرض التوثيق والشيفرة Golds (go101.org/golds) لعرض توثيق مشروع Go محدد محليًا. هذه ليست أداة رسمية؛ فقد طوّرتها أنا (Tapir Liu). تدعم Golds تجارب قراءة شيفرة غنية (مثل سرد علاقات تنفيذ الأنواع). بعد تثبيت Golds، يمكنك تشغيل golds std ./... لعرض توثيق الحزم القياسية والحزم في المجلد الحالي.
للاطلاع على توثيقات Go الرسمية، يُرجى زيارة go.dev.