دروس الوحدة (3/5)
الثوابت والذرة
الثوابت هي قيم غير قابلة للتغيير معروفة في وقت الترجمة. في الذهاب هم
تم التصريح عنها بـ const ويمكن كتابتها أو عدم كتابتها. تلك غير المكتوبة لديها
القوة العظمى: تتكيف مع النوع الذي يتطلبه السياق، مما يوفر عليك
من الاضطرار إلى كتابة تحويلات صريحة.
بناء الجملة الأساسي
const PI = 3.14
const MaxRetry int = 5
const Name = "eLearner"تمت كتابة MaxRetry (int): يمكنك تعيينه فقط إلى int.
PI وName غير مكتوبين: إنهما يتصرفان مثل "الأحرف الحرفية" ويتكيفان مع
السياق.
const PI = 3.14
var f float32 = PI // ok: PI è non tipata, diventa float32
var d float64 = PI // okمحمي_INLINE_8 كتل
يمكنك تجميع عدة ثوابت في كتلة:
const (
StateInitial = "INIT"
StateReady = "READY"
StateError = "ERROR"
)iota: عداد التعداد
داخل كتلة const، يبدأ المعرف الخاص iota عند 0
ويزيد بمقدار 1 على كل سطر. إنها لغة إجراء التعدادات:
const (
Monday = iota // 0
Tuesday // 1
Wednesday // 2
Thursday // 3
Friday // 4
)الأسطر اللاحقة ترث التعبير إذا لم توفر واحدًا.
ولهذا السبب فإن كتابة Tuesday تكفي دون تكرار = iota.
الأنماط مع التعبيرات
يمكن أن يظهر iota داخل تعبيرات عشوائية:
const (
KB = 1 << (10 * (iota + 1)) // 1 << 10 = 1024
MB // 1 << 20
GB // 1 << 30
TB // 1 << 40
)تخطي قيمة
إذا كنت لا تريد تعيين قيمة لخط (لأنك تريد iota أن
الزيادة على أي حال)، استخدم المعرف الفارغ _:
const (
_ = iota // scarta 0
KB // 1
MB // 2
)دورك
أعلن عن PI ثابت بقيمة 3.14 على مستوى الحزمة، ثم قم بطباعته داخل الملف main.
إظهار التلميح
`const PI = 3.14` يذهب على مستوى الحزمة، خارج المستوى الرئيسي.
الحل متاح بعد 3 من المحاولات
حدد كتلة const مع أيام الأسبوع (الاثنين، الثلاثاء، الأربعاء) مرقمة من 1 باستخدام iota.
إظهار التلميح
استخدم `iota + 1` في السطر الأول من الكتلة؛ الأسطر اللاحقة ترث التعبير.
الحل متاح بعد 3 من المحاولات
ماذا يطبع هذا البرنامج؟
const (
A = iota * 2
B
C
)
fmt.Println(A, B, C)خلاصة
constللقيم غير القابلة للتغيير المعروفة في وقت الترجمة.- الثوابت غير المكتوبة تتكيف مع السياق: لا حاجة للتحويل.
const ( ... )يحجب القيم المرتبطة بالمجموعة.iotaيبدأ عند 0 في كل كتلة ويزداد سطرًا تلو الآخر.- الأنماط: التعداد (
= iota)، قناع البت (= 1 << iota)، الوحدات (= 1 << (10*iota)).