المتغيرات والثوابت
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
Output:
التعريف المختصر بـ :=
داخل الدوال، يمكنك استخدام := للتعريف المختصر — وهي الطريقة الأكثر استخداماً:
name := "عزيز" // مكافئ لـ var name string = "عزيز"
age := 25 // مكافئ لـ var age int = 25
pi := 3.14 // مكافئ لـ var pi float64 = 3.14
قواعد مهمة لـ :=:
- تعمل فقط داخل الدوال — لا يمكن استخدامها على مستوى الحزمة (package level)
- تُعرّف وتُعطي قيمة في نفس الوقت
- لا تحتاج كتابة النوع — Go يستنتجه
main.go
Output:
تعريف عدة متغيرات دفعة واحدة
var (
name string = "عزيز"
age int = 25
country string = "السعودية"
)
الثوابت (Constants)
الثوابت قيم لا تتغير أبداً بعد تعريفها. نستخدم const:
const pi = 3.14159
const appName = "AzLearn"
const maxRetries = 3
الفرق بين المتغير والثابت:
- المتغير (
var/:=) يمكن تغيير قيمته - الثابت (
const) لا يمكن تغييره بعد التعريف
main.go
Output:
iota — عداد الثوابت
iota أداة قوية لإنشاء ثوابت متسلسلة (مثل enum في لغات أخرى):
main.go
Output:
إعادة تعيين المتغيرات
المتغيرات (وليس الثوابت) يمكن تغيير قيمتها:
x := 10
x = 20 // ✅ صحيح — تغيير القيمة
x = x + 5 // ✅ صحيح
x += 5 // ✅ اختصار
لكن لا يمكنك تغيير النوع:
x := 10
x = "نص" // ❌ خطأ — x هو int، لا يمكن تعيين string
نطاق المتغيرات (Scope)
main.go
Output:
تحدي — Challenge
عرّف متغيرين بأي طريقة واطبع مجموعهما