محتويات الدورة

Go / الأساسي: القيم وعقود البرامج / الدرس 1

الأدوات والوحدات ونموذج البرنامج

تتبع برنامج Go من مصدر الحزمة إلى الملف التنفيذي وسجل خيارات اللغة والأدوات صراحة.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • تمييز الوحدة والحزمة والأمر.
  • شرح main والاستيرادات والتنسيق وفحوص البناء.
  • قراءة go.mod دون خلطه بقفل إصدار أدوات دقيق.

الأمر حزمة ذات نقطة بداية

يبدأ الملف المصدري بتصريح الحزمة. تشكل ملفات المجلد الواحد عادة حزمة واحدة؛ ويستخدم الأمر package main ويعرف func main(). توفر الحزم المستوردة واجهات مسماة، ويرفض المترجم الاستيرادات غير المستخدمة. يُترجم مصدر Go قبل التنفيذ حتى لو أخفت go run خطوة البناء ظاهريا.

يستورد البرنامج الأول fmt ويستدعي Println التي تفصل المعاملات بفراغ وتنهي السطر. لا تعيد main قيمة. ينهي الإرجاع المعتاد ذلك الروتين؛ وينهي الإرجاع من main البرنامج، لذلك يجب انتظار العمل الخلفي صراحة في الدروس اللاحقة.

go أمر كامل
package main

import "fmt"

func main() {
	fmt.Println("Go", "ready")
}
الناتج المتوقع
Go ready

للأمر نقطة بداية واحدة ويكتب سطرا حتميا.

الوحدة تجمع حزما ذات إصدار

الوحدة مجموعة حزم تصدر معا. يحتوي جذرها go.mod حيث يحدد توجيه module بادئة مسار الاستيراد. يمكن لوحدة تعلم محلية استخدام نطاق أمثلة دون الاتصال به. لا تتطلب استيرادات المكتبة القياسية مثل fmt تنزيل وحدات خارجية. ضع كل عرض مستقل في وحدة مؤقتة منفصلة لتجنب تكرار main.

يحدد توجيه go أدنى إصدار ويؤثر في دلالات اللغة لحزم الوحدة. وقد يؤثر توجيه toolchain في اختيار الأدوات، وقد ينزل الاختيار التلقائي سلسلة أدوات. لا يكفي قول «Go مثبتة»؛ سجل go version وتوجيهات الوحدة وإعدادات البيئة المهمة.

حفظ سير بناء صغير قابل للتكرار

تنسق go fmt الحزم بالمنسق القياسي؛ وتفحص go build الحزم المختارة وتبنيها؛ وتشغل go test اختبارات الحزمة. يثبت البناء الناجح قبول الأنواع والصياغة لا صحة كل مدخل. شغل الأدوات من مجلد الوحدة المقصود وافحص أول تشخيص ذي صلة بدلا من ترقيع الرسائل المتسلسلة اللاحقة.

يمكن لإعداد معزول دون شبكة تعطيل وسطاء الوحدات والتنزيل التلقائي للأدوات بعد تثبيت مترجم مناسب. هذا تسهيل للتحقق وليس سياسة عامة لكل مشروع. تتطلب تحديثات الاعتمادات الفعلية جلبا ومراجعة وسجلات إصدار قابلة للتكرار، لا اعتمادا ضمنيا على الذاكرة المخبأة.

تتبع قيمة عبر التعليمات

المتغير موضع مسمى يحمل قيمة من نوعه المعلن. يقدم التصريح القصير := متغيرا محليا عند استيفاء شروطه؛ ويسند = إلى متغير موجود. يبدأ count في البرنامج التالي باثنين ثم يُستبدل بخمسة. يلاحظ الاستدعاء نتيجة ذلك الإسناد المكتمل.

لا يفترض التتبع عناوين المكدس أو السجلات أو الجدولة. يقرر تنفيذ Go موضع التخزين، وقد يزيل التحسين المتغير الفعلي كليا. اشرح السلوك بعقد اللغة والآثار الملحوظة، لا بادعاء مقابلة كل سطر لتعليمة معالج واحدة.

go ملاحظة إسناد مكتمل
package main

import "fmt"

func main() {
	count := 2
	count = count + 3
	fmt.Printf("count=%d\n", count)
}
الناتج المتوقع
count=5

تصبح القيمة الصحيحة خمسة قبل أن يقرأها استدعاء التنسيق.

فصل الأساس عن أحدث إصدار

تعلن الدورة دلالات Go 1.22، بما فيها تغيير متغير الحلقة الذي قدمه ذلك الإصدار. قد تصف الوثائق الرسمية إصدارا أحدث؛ ولا تفترض وجود واجهة أضيفت لاحقا في مشروع Go 1.22. افحص ملاحظة الإصدار واحتياجات توافق المشروع قبل نسخ مساعد جديد مريح.

عند الإبلاغ عن فشل أرفق المصدر الأدنى والأمر الدقيق وتوجيهات الوحدة وإصدار الأدوات والمدخل والمخرج المتوقع والفعلي. قد يجعل ملف تنفيذي قديم أو أمر داخل وحدة أخرى تعديلا صحيحا يبدو بلا أثر. أعد الإنتاج في مجلد مؤقت نظيف قبل الاستنتاج عن اللغة.

الأخطاء الشائعة وإصلاحها

يُرفض استيراد غير مستخدم.

لماذا يحدث؟
لم يعد أي تعبير يشير إليه.
كيف تصلحه؟
أزل الاستيراد أو استخدم واجهته المقصودة.
كيف تتجنب تكراره؟
شغل التنسيق وفحص البناء بعد التعديلات.

لا يُبنى عرضان معا.

لماذا يحدث؟
تحتوي الحزمة تعريفات main متعددة.
كيف تصلحه؟
ضع الأمثلة المستقلة في مجلدات مؤقتة مختلفة.
كيف تتجنب تكراره؟
عامل كل مثال كامل كأمر مستقل.

يغيب مساعد جديد رغم صحة الصياغة.

لماذا يحدث؟
الأدوات أو المكتبة أقدم من الواجهة.
كيف تصلحه؟
استخدم عملية توافق الأساس أو حدث مطلب المشروع عمدا.
كيف تتجنب تكراره؟
افحص ملاحظات إصدار إضافة الواجهات الرسمية.

اختبر فهمك

1. توقع البرنامج الثاني عند تهيئة count بأربعة وإضافة سبعة وحدد ما يقرر النتيجة.

اعرض الحل المشروح

تخزن التهيئة أربعة ثم يحسب الإسناد أحد عشر ويستبدل count. تطبع Printf النص count=11 ثم سطرا جديدا. تتبع النتيجة حساب أعداد صغيرة قابلة للتمثيل وترتيب التعليمات، لا عنوانا مخمنا ولا مستوى تحسين. ويبقى التصريح منشئا لمتغير int محلي واحد.

2. اشرح لماذا لا يسجل توجيه go 1.22 وحده كل ما يلزم لإعادة البناء.

اعرض الحل المشروح

يسجل مطلب اللغة والإصدار الأدنى، بينما قد يكون المترجم أحدث. وتؤثر الاعتمادات وgo.sum ومساحة العمل ووسوم البناء والمنصة واختيار الأدوات أيضا. سجل المدخلات المهمة وشغل مجموعة الحزم نفسها. وفي مثال المكتبة القياسية وحدها يبسط مترجم مسجل ووحدة نظيفة صغيرة إعادة الإنتاج.

أهم ما تعلمته

  • الأمر والحزمة والوحدة حدود مختلفة.
  • سجل دلالات اللغة وسلسلة الأدوات الفعلية منفصلتين.
  • يتضمن المثال القابل للتكرار المصدر وسياق البناء والمدخل والنتيجة المتوقعة.

المراجع الرسمية