AzLearn

أول برنامج — Hello World

Hello World

مفهوم ~12 دقيقة

أول برنامج — Hello World

كل مبرمج يبدأ رحلته بـ “Hello World” — وهذا التقليد بدأ مع لغة C عام 1978. لكن في AzLearn، سنكتب “مرحباً بالعالم” 🐹

البرنامج الكامل

main.go

لنفهم كل سطر بالتفصيل:

السطر ١: package main

كل ملف Go ينتمي إلى حزمة (package). الحزمة هي طريقة Go لتنظيم الكود.

  • package main تعني أن هذا الملف هو نقطة البداية للبرنامج
  • أي برنامج قابل للتنفيذ يجب أن يحتوي على حزمة main
  • الحزم الأخرى (مثل fmt) هي مكتبات نستوردها ونستخدمها

فكّر في الحزم مثل المجلدات — كل مجلد يحتوي على ملفات مرتبطة ببعضها.

السطر ٢: import "fmt"

كلمة import تستورد حزماً خارجية نحتاجها في برنامجنا.

fmt (اختصار format) هي أهم حزمة في Go — تحتوي على دوال للطباعة والتنسيق:

  • fmt.Println() — طباعة سطر (مع سطر جديد في النهاية)
  • fmt.Printf() — طباعة منسّقة (مثل printf في C)
  • fmt.Sprintf() — تنسيق نص وإرجاعه كـ string

لاستيراد عدة حزم، نستخدم الأقواس:

import (
    "fmt"
    "math"
    "strings"
)

ملاحظة مهمة: Go لا يسمح باستيراد حزمة لا تُستخدم! إذا استوردت حزمة ولم تستخدمها، ستحصل على خطأ ترجمة. هذا تصميم مقصود للحفاظ على نظافة الكود.

السطر ٣: func main()

func تُعرّف دالة (function). الدالة main هي نقطة بداية البرنامج — أول شيء يتنفذ.

func main() {
    // الكود هنا
}
  • الأقواس () بعد الاسم تحتوي على المعاملات (parameters) — فارغة هنا
  • القوس المعقوص { يجب أن يكون في نفس سطر تعريف الدالة (إجباري في Go)
  • كل ما بين {} هو جسم الدالة (function body)

السطر ٤: fmt.Println(...)

هذا هو الأمر الفعلي — استدعاء دالة Println من حزمة fmt.

  • Println = Print Line (طباعة سطر)
  • تطبع النص وتضيف سطراً جديداً \n في النهاية تلقائياً
  • يمكنها طباعة أي نوع من البيانات: نصوص، أرقام، قيم منطقية
main.go

التعليقات (Comments)

التعليقات نص يتجاهله المترجم (compiler) — نكتبها لشرح الكود:

// تعليق سطر واحد — Single line comment

/*
تعليق
متعدد
الأسطر — Multi-line comment
*/

في AzLearn نكتب التعليقات بشكل ثنائي اللغة لتسهيل الفهم.

رموز التنسيق في Printf

Printf تستخدم رموزاً خاصة (format verbs) لتنسيق البيانات:

الرمزالاستخدام
%sنص (string)
%dعدد صحيح (integer)
%fعدد عشري (float)
%tقيمة منطقية (boolean)
%vأي قيمة (value) — Go يختار التنسيق
%Tنوع القيمة (type)
%+vقيمة مع أسماء الحقول
\nسطر جديد
main.go

أخطاء شائعة للمبتدئين

١. نسيان package main:

// ❌ خطأ — لا يوجد package
import "fmt"
func main() { fmt.Println("خطأ") }

٢. القوس { في سطر منفصل:

// ❌ خطأ في Go — القوس يجب أن يكون في نفس السطر
func main()
{
    fmt.Println("خطأ")
}

٣. استيراد حزمة غير مستخدمة:

import (
    "fmt"
    "math" // ❌ خطأ — مستوردة لكن غير مستخدمة
)

٤. عدم استخدام متغير مُعلَن:

x := 5 // ❌ خطأ إذا لم تستخدم x

Go صارمة في هذه الأمور — وهذا شيء جيد! يجبرك على كتابة كود نظيف.

ماذا بعد؟

أنت الآن تعرف بنية برنامج Go الأساسي. في الفصل القادم ننتقل للأساسيات: المتغيرات والأنواع والدوال.

تحدي — Challenge

أعد بناء البرنامج — Rebuild the Program

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

أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
package main

import "fmt"

func main() {
    fmt.Println("مرحبا بالعالم!")
}
اكتب هنا