الانتقال إلى المحتوى الرئيسي
الوحدة 1 · الدرس 3 من 53/50 في الدورة~10 min
دروس الوحدة (3/5)

الثوابت والذرة

الثوابت هي قيم غير قابلة للتغيير معروفة في وقت الترجمة. في الذهاب هم تم التصريح عنها بـ const ويمكن كتابتها أو عدم كتابتها. تلك غير المكتوبة لديها القوة العظمى: تتكيف مع النوع الذي يتطلبه السياق، مما يوفر عليك من الاضطرار إلى كتابة تحويلات صريحة.

بناء الجملة الأساسي

Go
const PI = 3.14
const MaxRetry int = 5
const Name = "eLearner"

تمت كتابة MaxRetry (int): يمكنك تعيينه فقط إلى int. PI وName غير مكتوبين: إنهما يتصرفان مثل "الأحرف الحرفية" ويتكيفان مع السياق.

Go
const PI = 3.14

var f float32 = PI  // ok: PI è non tipata, diventa float32
var d float64 = PI  // ok

محمي_INLINE_8 كتل

يمكنك تجميع عدة ثوابت في كتلة:

Go
const (
    StateInitial = "INIT"
    StateReady   = "READY"
    StateError   = "ERROR"
)

iota: عداد التعداد

داخل كتلة const، يبدأ المعرف الخاص iota عند 0 ويزيد بمقدار 1 على كل سطر. إنها لغة إجراء التعدادات:

Go
const (
    Monday = iota // 0
    Tuesday       // 1
    Wednesday     // 2
    Thursday      // 3
    Friday        // 4
)

الأسطر اللاحقة ترث التعبير إذا لم توفر واحدًا. ولهذا السبب فإن كتابة Tuesday تكفي دون تكرار = iota.

الأنماط مع التعبيرات

يمكن أن يظهر iota داخل تعبيرات عشوائية:

Go
const (
    KB = 1 << (10 * (iota + 1)) // 1 << 10 = 1024
    MB                          // 1 << 20
    GB                          // 1 << 30
    TB                          // 1 << 40
)

تخطي قيمة

إذا كنت لا تريد تعيين قيمة لخط (لأنك تريد iota أن الزيادة على أي حال)، استخدم المعرف الفارغ _:

Go
const (
    _  = iota // scarta 0
    KB        // 1
    MB        // 2
)

دورك

تمرين#go.m1.l3.e1
المحاولات: 0جارٍ التحميل…

أعلن عن PI ثابت بقيمة 3.14 على مستوى الحزمة، ثم قم بطباعته داخل الملف main.

جارٍ تحميل المحرر…
إظهار التلميح

`const PI = 3.14` يذهب على مستوى الحزمة، خارج المستوى الرئيسي.

الحل متاح بعد 3 من المحاولات

تمرين#go.m1.l3.e2
المحاولات: 0جارٍ التحميل…

حدد كتلة const مع أيام الأسبوع (الاثنين، الثلاثاء، الأربعاء) مرقمة من 1 باستخدام iota.

جارٍ تحميل المحرر…
إظهار التلميح

استخدم `iota + 1` في السطر الأول من الكتلة؛ الأسطر اللاحقة ترث التعبير.

الحل متاح بعد 3 من المحاولات

Quiz#go.m1.l3.e3
جاهز

ماذا يطبع هذا البرنامج؟

Go
const (
    A = iota * 2
    B
    C
)
fmt.Println(A, B, C)
خيارات الإجابة

خلاصة

  • const للقيم غير القابلة للتغيير المعروفة في وقت الترجمة.
  • الثوابت غير المكتوبة تتكيف مع السياق: لا حاجة للتحويل.
  • const ( ... ) يحجب القيم المرتبطة بالمجموعة.
  • iota يبدأ عند 0 في كل كتلة ويزداد سطرًا تلو الآخر.
  • الأنماط: التعداد (= iota)، قناع البت (= 1 << iota)، الوحدات (= 1 << (10*iota)).