مرکزی مواد پر جائیں
ماڈیول 1 · سبق 3 از 5کورس میں 3/50~10 min
ماڈیول اسباق (3/5)

Constants اور iota

Constants غیر متغیر اقدار ہیں جو مرتب وقت پر معلوم ہوتی ہیں۔ گو میں وہ ہیں۔ const کے ساتھ اعلان کیا اور typed یا untyped کیا جا سکتا ہے۔ غیر ٹائپ شدہ ہیں a سپر پاور: وہ آپ کو بچاتے ہوئے سیاق و سباق کے مطابق مطلوبہ قسم کو اپناتے ہیں۔ واضح تبادلوں کو لکھنے سے۔

بنیادی نحو

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

const بلاکس

آپ ایک بلاک میں کئی مستقل گروپ بنا سکتے ہیں:

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لوڈ ہو رہا ہے…

پیکیج کی سطح پر قیمت 3.14 کے ساتھ ایک مستقل PI کا اعلان کریں، پھر اسے مین کے اندر پرنٹ کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

`const PI = 3.14` پیکیج کی سطح پر جاتا ہے، مین سے باہر۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#go.m1.l3.e2
کوششیں: 0لوڈ ہو رہا ہے…

iota کا استعمال کرتے ہوئے 1 سے نمبر والے ہفتے کے دنوں (پیر، منگل، بدھ) کے ساتھ ایک کانسٹ بلاک کی وضاحت کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

بلاک کی پہلی لائن پر `iota + 1` استعمال کریں۔ بعد کی لائنیں اظہار کی وارث ہوتی ہیں۔

3 کوششوں کے بعد حل دستیاب ہے۔

Quiz#go.m1.l3.e3
تیار

یہ پروگرام کیا پرنٹ کرتا ہے؟

Go
const (
    A = iota * 2
    B
    C
)
fmt.Println(A, B, C)
جواب کے اختیارات

Recap

  • const غیر متغیر اقدار کے لیے جو مرتب وقت پر معلوم ہوتی ہیں۔
  • غیر ٹائپ شدہ مستقل سیاق و سباق کے مطابق ہوتے ہیں: کسی تبدیلی کی ضرورت نہیں۔
  • const ( ... ) گروپ سے متعلق اقدار کو روکتا ہے۔
  • iota ہر بلاک میں 0 سے شروع ہوتا ہے اور لائن میں اضافہ ہوتا ہے۔
  • پیٹرنز: enum (= iota)، بٹ ماسک (= 1 << iota)، یونٹس (= 1 << (10*iota))۔