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
أظهر الحل — Show Solution
package main

import "fmt"

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