تمرين – مرحبًا بالعالم

مكتمل

في هذا القسم، ستكتب برنامج Go الأول لطباعة رسالة على الشاشة. يعد هذا التمرين طريقة نموذجية للشروع في العمل باستخدام لغة برمجة. ستتعرف على المزيد حول واجهة سطر الأوامر (CLI) في Go، وكيفية إنشاء تطبيق Go وتشغيله.

تكوين بيئة التطوير المتكامل لفتحها من واجهة سطر الأوامر

يمكنك فتح بيئة التطوير المتكامل لـ Visual Studio Code من موجه الأوامر بواجهة سطر الأوامر لديك، وبدء تحرير الملفات في مساحة العمل الحالية. يتم تطبيق ميزة بيئة التطوير المتكامل هذه باستخدام متغير بيئة النظام $PATH (أو $Path). عند تمكين الميزة، يمكنك استخدام الأمر code . من واجهة سطر الأوامر لفتح بيئة التطوير المتكامل وتحرير الملفات في الدليل الحالي.

تضيف بعض عمليات تثبيت Visual Studio Code دعم واجهة سطر الأوامر إلى متغير $PATH افتراضياً. قد ترى هذا الخيار أثناء عملية التثبيت. إذا تم تكوين هذا الإعداد بالفعل، فأنت جاهز تماماً. وإلا، فقد تحتاج إلى القيام بالخطوات التالية لاستخدام هذه الميزة.

Linux أو macOS

اتبع هذه الخطوات لتسجيل واجهة سطر الأوامر لـ Visual Studio Code في متغير البيئة $PATH لديك:

  1. فتح Visual Studio Code.

  2. ضمن View، حدد Command Palette.

  3. في مربع البحث، أدخل الأمر shell. أثناء الكتابة، تتم تصفية النتائج.

  4. اختر الأمر Shell Command: Install 'code' command in PATH.

  5. أغلق موجه الأوامر Command أو Terminal المفتوح.

    هام

    إذا كان لديك موجه أوامر مفتوح من التمرين السابق، فأغلق موجه الأوامر وافتح موجه أوامر جديداً. هذه الخطوة ضرورية لسريان تغيير قيمة $PATH الجديدة.

  6. أغلق Visual Studio Code.

Windows

اتبع هذه الخطوات لإضافة موقع واجهة سطر أوامر Visual Studio Code إلى متغير بيئة نظام $Path:

إشعار

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

  1. افتح لوحة التحكم في Windows.

  2. حدد النظام، ثم حدد إعدادات النظام المتقدمة.

  3. في مربع الحوار خصائص النظام ضمن خيارات متقدمة، حدد متغيرات البيئة. افتح مربع الحوار تحرير متغيرات البيئة.

    يعرض مربع الحوار تحرير متغيرات البيئة قائمتين:

    • متغيرات المستخدم لـ <user-name>: تعريفات المتغير المحلي لمستخدم معين.
    • متغيرات النظام: تعريفات متغيرات النظام لكافة المستخدمين.

    في هذا الإجراء، نحن نعمل مع متغيرات النظام.

  4. في مربع الحوار متغيرات البيئة في مربع القائمة متغيرات النظام، قم بالتمرير لتحديد موقع متغير المسار.

  5. حدد متغير المسار لتمييز الصف. حدد تحرير. افتح مربع الحوار تحرير متغيرات البيئة. يسرد مربع الحوار كافة مواقع المجلد التي تم تعريفها في المتغير.

  6. في مربع الحوار تحرير متغيرات البيئة، حدد جديد. يتم فتح صف فارغ في نهاية القائمة.

  7. في الصف الفارغ، أدخل واجهة سطر أوامر Visual Studio Code القابلة للتنفيذ. استبدل <user-name> ليحل محله اسم المستخدم.

    C:\Users\<user-name>\AppData\Local\Programs\Microsoft VS Code\bin
    
  8. حدد موافق لإغلاق كل مربع حوار.

  9. أغلق مربع الحوار خصائص النظام ولوحة التحكم في Windows.

الخطوة 1: افتح مساحة عمل وبيئة التطوير المتكامل في Go

بعد التأكد من أن Visual Studio Code جاهز للاستخدام من واجهة سطر الأوامر، يمكنك فتح مساحة عمل Go.

  1. افتح موجه أوامر Command أو Terminal جديداً.

  2. افتح دليل مساحة عمل Go بواسطة تشغيل الأمر التالي:

    cd $GOPATH/src
    
    cd %GOPATH%/src
    
  3. استخدم الأمر التالي لفتح Visual Studio Code من مساحة العمل لديك:

    code .
    

تشغيل Visual Studio Code. يتم عرض طريقة العرض مستكشف إلى اليسار، وصفحة الترحيب إلى اليمين.

في طريقة العرض مستكشف، يجب فتح القسم SRC من مشروع Go (موسعة). هذا القسم هو المجلد /src لمشروعك. إنه فارغ حالياً، ولكننا سنضيف بعض المحتوى في الخطوة التالية.

الخطوة 2: إنشاء مجلد جديد وملف Go

دعنا نضيف مجلداً وملفاً إلى مشروع Go لديك. هناك عدة طرق في Visual Studio Code لإنشاء عناصر جديدة:

  • الإجراءات في قائمة شريط الأدوات:
    • حدد ملف>فتح مجلد، ثم قم بإنشاء مجلد جديد.
    • حدد ملف>ملف جديد، وابدأ ملفاً جديداً.
  • الارتباطات على صفحة الترحيب، والتي تشبه إجراءات قائمة شريط الأدوات.
  • الأيقونات في طريقة عرض المستكشف ، على يمين قسم SRC :
    • حدد رمز مجلد جديد. في مربع النص، اكتب اسم المجلد، واضغط على «مفتاح الإدخال».
    • حدد رمز ملف جديد. في مربع النص، اكتب اسم الملف، واضغط على «مفتاح الإدخال».

أكمل الخطوات التالية في Visual Studio Code. لإنشاء الملف والمجلد الجديدين، استخدم العملية التي تعمل بشكل أفضل بالنسبة لك.

  1. أنشئ مجلداً جديداً يسمى helloworld.

  2. أنشئ ملفاً جديداً يسمى main.go للتعليمة البرمجية لتطبيقك.

  3. قم بتوسيع طريقة العرض مستكشف>SRC لإظهار شجرة بنية المجلد. ويجب أن يبدو مثل هذا المثال:

    SRC/
        helloworld/
            main.go

تثبيت أدوات ملحق Go

إذا كان main.go هو أول ملف Go تفتحه في Visual Studio Code، فقد تتم مطالبتك بتثبيت أدوات أخرى لملحق Go. عند مطالبتك، حدد Install. يتم فتح موجه الأوامر Terminal في أسفل بيئة التطوير المتكامل لعرض إخراج العملية. يجب أن ترى الإخراج مثل هذا المثال:

بيئة الأدوات: GOPATH=C:\Projects\Go
تثبيت 5 أدوات في C:\Projects\Go\bin في وضع الوحدة.
نجح تثبيت github.com/uudashr/gopkgs/v2/cmd/gopkgs (C:\Projects\Go\bin\gopkgs.exe)

أثناء عملية التثبيت، تحقق من شريط الحالة في Visual Studio Code. إذا رأيت رسالة في أسفل اليمين، مثل "All tools not installed"، فحدد الرسالة. في النافذة المنبثقة، حدد Install.

عند نجاح عملية التثبيت، يعرض الإخراج Terminal ملخصاً:

تم تثبيت كافة الأدوات بنجاح. أنت الآن جاهز للعمل مع Go.

الخطوة 3: إضافة تعليمة برمجية إلى ملف Go

دعونا الآن نضيف التعليمات البرمجية إلى ملف Go.

  1. في الملف main.go، أضف التعليمات البرمجية التالية:

    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Hello World!")
    }
    
  2. احفظ الملف.

لا تقلق بشأن تنسيق التعليمات البرمجية، مثل علامات التبويب أو المسافات. يُنسِق Visual Studio Code التعليمات البرمجية تلقائياً في كل مرة تقوم فيها بحفظ الملف.

الخطوة 4: تنفيذ برنامج Go

يمكن تنفيذ برنامج Go في موجه أوامر Command أو Terminal، أو في Terminal الذي يعمل داخل Visual Studio Code.

يمكنك استخدام موجه أوامر موجود أو فتح واحد جديد. إذا قمت بفتح موجه أوامر جديد، تذكر تغيير موقع الدليل إلى مساحة عمل Go. تأكد أيضاً من تشغيل البرنامج من المجلد الذي يحتوي على ملف Go: $GOPATH/src/helloworld.

فتح Terminal داخل Visual Studio Code

إذا كنت ترغب في تشغيل البرنامج من داخل Visual Studio Code بدلاً من موجه الأوامر المستقل Command أو Terminal، فاتبع الخطوات التالية:

  1. في Visual Studio Code، حدد Terminal، ثم حدد New Terminal.

  2. في المربع المنسدل في أعلى يمين موجه أوامر Terminal، حدد New Command Prompt.

  3. في موجه أوامر Terminal، قم بتشغيل الأمر التالي لتغيير موقع الدليل إلى مساحة عمل Go والمجلد الذي يحتوي على ملف Go:

    cd $GOPATH/src/helloworld
    
    cd %GOPATH%/src/helloworld
    

تشغيل تطبيق Go

لتشغيل تطبيق Go، استخدم الأمر التالي في Terminal أو موجه الأوامر:

go run main.go

ينبغي أن تشاهد المخرج التالي:

Hello World!

يؤدي تنفيذ أمر go run إلى نتيجتين. يقوم بالتحويل البرمجي للتطبيق، وبعد نجاح التحويل البرمجي، ينفذ التطبيق.

إنشاء قابل للتنفيذ

لإنشاء قابل للتنفيذ لبرنامجك، استخدم هذا الأمر:

go build main.go

عند انتهاء الأمر go build، فإنه ينشئ تطبيقاً قابلاً للتنفيذ يمكنك تشغيله في أي وقت دون مزيد من المعالجة. الأمر ينتج فقط تطبيقاً قابلاً للتنفيذ. ولا يقوم بتشغيل البرنامج مثل أمر go run.

مراجعة محتويات /src

إليك ما يجب أن يبدو عليه مشروعك الآن في طريقة عرض Explorer>SRC:

SRC/
    helloworld/
        أساسي
        main.go

في طريقة العرض مستكشف اسم الملف بدون الملحق هو الملف القابل للتنفيذ الذي يمكنك استخدامه لتشغيل البرنامج. (على Windows، يحتوي هذا الملف فعلياً على ملحق ‎.exe) عند قيامك بالإعداد، يمكنك استخدام الأمر go run. لإنشاء الثنائيات للتطبيق، يمكنك استخدام الأمر go build وتوزيع الملف الثنائي القابل للتنفيذ إلى بيئة مناسبة.

ماذا كتبت للتو في " Go"؟

أنشأت تطبيق Go الأول، وتأكدت من تحوله البرمجي وتشغيله. دعونا نفحص التعليمات البرمجية سطراً فسطر.

سنبدأ بالعبارة الأولى في ملف Go لديك:

package main

عبارة package main تدور حول كيفية إخبار Go بأن التطبيق الذي نقوم بإنشائه هو برنامج قابل للتنفيذ (ملف يمكنك تشغيله). يُعد تطبيق "Hello World!" جزءاً من الحزمة main. الحزمة هي مجموعة من ملفات التعليمات البرمجية المصدر الشائعة. كل تطبيق قابل للتنفيذ له هذا السطر الأول، حتى لو كان المشروع أو الملف له اسم مختلف.

سننظر عن كثب في هذه المفاهيم في الوحدة التالية. في الوقت الراهن، نحن بحاجة إلى معرفة أن كل برنامج قابل للتنفيذ يجب أن يكون جزءاً من حزمة main.

التحدي: تغيير اسم الحزمة

هل يمكنك تأكيد أهمية حزمة main؟

  1. في ملف Go، قم بتغيير اسم الحزمة في السطر الأول.
  2. احفظ الملف، ثم شغل البرنامج مرة أخرى في Terminal.

  ماذا يحدث؟ هل ترى تطبيق "Hello World!"؟ هل يتم إنتاج ملف ثنائي قابل للتنفيذ؟

 

عرض الإجابة
"Hello World!" غير معروض. لا يتم إنتاج ملف ثنائي قابل للتنفيذ. يجب أن تشاهد خطأ: `go run: cannot run non-main package`. لماذا؟ يجب أن يكون كل برنامج قابل للتنفيذ جزءاً من الحزمة "الرئيسية".

إليك السطر التالي في ملف Go:

import "fmt"

العبارة import تمنح برنامجك إمكانية الوصول إلى تعليمات برمجية أخرى في حزم مختلفة. في هذه الحالة، fmt هو حزمة مكتبة قياسية. يمكنك أن تقرأ عن حزمة fmt في الموقع الرسمي لوثائق Go.

تحتاج إلى عبارة import هذه، لأنك تستخدم دالة من هذه الحزمة لطباعة رسالة إلى الشاشة لاحقاً في البرنامج. يمكنك تضمين العديد من عبارات import كما تريد أو تحتاج في البرنامج. ومع ذلك، فإن لغة Go اصطلاحية للغاية في هذا الصدد. إذا قمت باستيراد حزمة، ولكنك لا تستخدم دالة مطابقة من الحزمة، فلن يقوم التطبيق بتحويلها برمجياً. ثمة ميزة كبيرة من Visual Studio Code تتمثل في أنه يزيل تلقائياً عمليات الاستيراد غير المستخدمة في البرنامج عند حفظ الملف.

هل قام Visual Studio Code بإزالة الاستيراد عند حفظ الملف؟ حاول تحرير الملف بدون Visual Studio Code، وحاول تشغيل التطبيق. ما هو الناتج الذي تراه الآن؟

التحدي: إضافة استيراد آخر

هل يمكنك التحقق مما تعلمته عن عمليات الاستيراد غير المستخدمة؟

  1. استعادة ملف Go إلى التعليمات البرمجية الأصلية.
  2. أضف عبارة استيراد أخرى مثل math أو io.
  3. احفظ الملف، ثم شغل البرنامج مرة أخرى في Terminal.

  ماذا يحدث؟ هل يقوم Visual Studio Code بإزالة الاستيراد غير المستخدم؟ إذا كان الأمر كذلك، فمتى تتم إزالته؟

  1. حرر ملف Go مرة أخرى، ولكن لا تستخدم Visual Studio Code.
  2. احفظ الملف وشغل البرنامج في موجه أوامر جديد.

  ماذا يحدث؟ ما هو الناتج الذي تراه الآن؟

 

عرض الإجابة
إذا قمت بتحرير ملف Go في IDE، فعند حفظ ملفك، يكتشف Visual Studio Code أي حزم غير مستخدمة ويزيل عبارات `import` المقابلة. عند تحرير ملف Go خارج Visual Studio Code، تفشل التعليمات البرمجية. يجب أن تشاهد خطأ، مثل: `# command-line-arguments .\main.go:5:2: imported and not used: "math"`.

دعونا ننظر إلى مجموعة من التعليمات البرمجية في ملف Go لديك:

func main() {
   fmt.Println("Hello World!")
}

العبارة func هي كلمة محجوزة تستخدم في الإعلان عن دالة. هذه الدالة الأولى تسمى "main" لأنها نقطة البداية لبرنامجنا. يمكن أن تكون لديك دالة main() واحدة فقط عبر package main (الدالة التي قمت بتعريفها في السطر الأول). في دالة main()، قمت باستدعاء الدالة Println من الحزمة fmt. لقد أرسلت رسالة نصية تريد رؤيتها على الشاشة.

هناك المزيد لتغطيته حول الدوال، وسنتناول الحديث عنها في الوحدة التالية.