تعريف المتغيرات في Go
var و:= واستنتاج النوع
تعريف المتغيرات في Go درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.
ما المتغير؟
المتغير هو موقع تخزين مُسمّى لقيمة. في Go، لكل متغير نوع ثابت وقت الترجمة.
- Go ثابتة الأنواع — لا يمكن للأنواع أن تتغير أثناء التشغيل
- تملك المتغيرات دائمًا قيمة صفرية افتراضية عند عدم تعيينها صراحةً
- تُعدّ التسمية الواضحة مهمة: تفضّل Go الأسماء القصيرة والواضحة على الأسماء الطويلة
التصريح عن المتغير باستخدام var
تصرّح الكلمة المفتاحية var بمتغير واحد أو أكثر صراحةً:
package main
func main() {
var name string
var age int
var pi float64 = 3.14
_ = name
_ = age
_ = pi
}التصريح المختصر عن المتغير :=
داخل الدوال، يمكنك استخدام := لإجراء التصريح والإسناد باقتضاب في خطوة واحدة.
- يُستنتج النوع من الطرف الأيمن
- لا يتوفر
:=إلا داخل جسم الدالة - يجب أن يكون متغير واحد على الأقل في الطرف الأيسر جديدًا
package main
func main() {
city := "Ankara" // string inferred
count := 42 // int inferred
temp := 36.6 // float64 inferred
_ = city
_ = count
_ = temp
}القيم الصفرية
تُهيّئ Go كل متغير مُصرّح عنه إلى قيمته الصفرية تلقائيًا:
int،float64→0string→""(سلسلة نصية فارغة)bool→false- المؤشرات والشرائح والخرائط والقنوات →
nil
تزيل القيم الصفرية أخطاء المتغيرات غير المهيّأة الشائعة في C/C++.
التصريح عن عدة متغيرات
صرّح عن عدة متغيرات وأسند قيمًا إليها دفعةً واحدة باستخدام صيغة الكتلة أو الصيغة الصفية:
package main
var (
host = "localhost"
port = 8080
debug = false
)
func main() {
x, y := 10, 20
_ = x
_ = y
}قواعد استنتاج النوع
عند استخدام :=، تستنتج Go النوع من القيمة الحرفية:
- القيم الحرفية للأعداد الصحيحة →
int - القيم الحرفية للأعداد ذات الفاصلة العائمة →
float64 - القيم الحرفية للسلاسل النصية →
string - القيم الحرفية للأعداد المركبة →
complex128
إذا احتجت إلى نوع محدد (مثل int32)، فاستخدم تصريحًا صريحًا باستخدام var أو تحويلًا.
المتغيرات على مستوى الحزمة مقابل مستوى الدالة
يمكن أن توجد المتغيرات على مستوى الحزمة (عامة بالنسبة إلى الحزمة) أو على مستوى الدالة (محلية بالنسبة إلى الدالة):
- على مستوى الحزمة: استخدم
var— ويمكن الوصول إليها من أي مكان في الحزمة - على مستوى الدالة: استخدم
:=أوvar— ولا تكون مرئية إلا داخل الدالة - فضّل المتغيرات على مستوى الدالة لإبقاء الحالة محصورة
المعرّف الفارغ _
يتجاهل المعرّف الفارغ _ قيمةً لا تحتاج إليها. تتطلب Go استخدام كل متغير مُصرّح عنه — ويمثل _ الاستثناء من ذلك:
package main
func divide(a, b int) (int, int) {
return a / b, a % b
}
func main() {
quotient, _ := divide(10, 3) // discard remainder
_ = quotient
}حجب المتغيرات
يحدث حجب المتغيرات عندما يصرّح نطاق داخلي عن متغير يحمل الاسم نفسه الذي يحمله متغير في نطاق خارجي:
- يحجب المتغير الداخلي المتغير الخارجي ضمن نطاقه
- قد يؤدي ذلك إلى أخطاء دقيقة — لذا تعمّد استخدامه
- استخدم
go vetوأدوات الفحص مثلstaticcheckلاكتشاف حجب المتغيرات غير المقصود
الأخطاء الشائعة عند استخدام :=
انتبه إلى مطبات := التالية:
- استخدام
:=على مستوى الحزمة → خطأ في الترجمة - وجود جميع المتغيرات في الطرف الأيسر مسبقًا → استخدم
=بدلًا منه - حجب متغير خطأ خارجي عن غير قصد في كتل if-err
عند الشك، استخدم var الصريح من أجل الوضوح.
تحقق سريع
أيّ مما يلي هو الصيغة الصحيحة للتصريح المختصر عن متغير في Go؟
مراجعة: التصريح عن المتغيرات
أصبحت تعرف الآن كيفية التصريح عن المتغيرات في Go:
var name type— تصريح صريح مع قيمة صفريةvar name = value— استخدام var مع استنتاج النوعname := value— تصريح مختصر داخل الدوال- القيم الصفرية تلقائية — لا توجد حالة غير مهيّأة
- يتجاهل
_القيم غير المطلوبة
التالي: الأنواع المضمنة في Go وقيمها الصفرية بالتفصيل.
مهمة تدريبية
جرّب بنفسك: صرّح عن متغير على مستوى الحزمة باسم appName من النوع string، ومتغير على مستوى الدالة باسم retries باستخدام := وأسند إليه القيمة 3.
تذكّر: تستخدم المتغيرات على مستوى الحزمة var، ولا يصح استخدام := إلا داخل أجسام الدوال.
الأسئلة الشائعة
هل درس «تعريف المتغيرات في Go» مجاني؟
نعم — نص درس «تعريف المتغيرات في Go» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.
ماذا ستتعلم في «تعريف المتغيرات في Go»؟
var و:= واستنتاج النوع تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟
لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «تعريف المتغيرات في Go»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟
نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تعريف المتغيرات في Go
- الأنواع المضمّنة في Go
- الثوابت وiota
- تحويلات الأنواع في Go