AzLearn

المتغيرات والثوابت

Variables & Constants

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

المتغيرات والثوابت — Variables & Constants

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

تعريف المتغيرات بـ var

الطريقة الكلاسيكية لتعريف متغير:

var name string = "عزيز"
var age int = 25
var isStudent bool = true

الصيغة: var اسم_المتغير نوع_البيانات = القيمة

يمكنك حذف النوع إذا أعطيت قيمة — Go يستنتج النوع تلقائياً (type inference):

var name = "عزيز"    // Go يعرف أنها string
var age = 25         // Go يعرف أنها int

ويمكنك التعريف بدون قيمة — ستأخذ القيمة الصفرية (zero value):

var name string   // "" (نص فارغ)
var age int       // 0
var active bool   // false
var salary float64 // 0.0
main.go

التعريف المختصر بـ :=

داخل الدوال، يمكنك استخدام := للتعريف المختصر — وهي الطريقة الأكثر استخداماً:

name := "عزيز"      // مكافئ لـ var name string = "عزيز"
age := 25           // مكافئ لـ var age int = 25
pi := 3.14          // مكافئ لـ var pi float64 = 3.14

قواعد مهمة لـ :=:

  1. تعمل فقط داخل الدوال — لا يمكن استخدامها على مستوى الحزمة (package level)
  2. تُعرّف وتُعطي قيمة في نفس الوقت
  3. لا تحتاج كتابة النوع — Go يستنتجه
main.go

تعريف عدة متغيرات دفعة واحدة

var (
    name    string = "عزيز"
    age     int    = 25
    country string = "السعودية"
)

الثوابت (Constants)

الثوابت قيم لا تتغير أبداً بعد تعريفها. نستخدم const:

const pi = 3.14159
const appName = "AzLearn"
const maxRetries = 3

الفرق بين المتغير والثابت:

  • المتغير (var/:=) يمكن تغيير قيمته
  • الثابت (const) لا يمكن تغييره بعد التعريف
main.go

iota — عداد الثوابت

iota أداة قوية لإنشاء ثوابت متسلسلة (مثل enum في لغات أخرى):

main.go

إعادة تعيين المتغيرات

المتغيرات (وليس الثوابت) يمكن تغيير قيمتها:

x := 10
x = 20      // ✅ صحيح — تغيير القيمة
x = x + 5   // ✅ صحيح
x += 5      // ✅ اختصار

لكن لا يمكنك تغيير النوع:

x := 10
x = "نص"   // ❌ خطأ — x هو int، لا يمكن تعيين string

نطاق المتغيرات (Scope)

main.go
تحدي — Challenge