মূল কন্টেন্টে যান
মডিউল 1 · 3-এর পাঠ 5কোর্সে 3/50~10 min
মডিউল পাঠ (3/5)

ধ্রুবক এবং iota

ধ্রুবক হল অপরিবর্তনীয় মান যা কম্পাইলের সময় পরিচিত। গো ইন তারা const দিয়ে ঘোষণা করা হয়েছে এবং typed বা untyped হতে পারে। টাইপ না করা আছে একটি সুপারপাওয়ার: তারা আপনাকে রেহাই দিয়ে প্রেক্ষাপট দ্বারা প্রয়োজনীয় ধরণের সাথে খাপ খায় স্পষ্ট রূপান্তর লিখতে হচ্ছে থেকে.

মৌলিক সিনট্যাক্স

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
)

পরবর্তী লাইন অভিব্যক্তির উত্তরাধিকারী যদি তারা একটি প্রদান না করে। তাই = iota পুনরাবৃত্তি না করে Tuesday লেখাই যথেষ্ট।

অভিব্যক্তি সহ নিদর্শন

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)
উত্তরের বিকল্প

রিক্যাপ

  • কম্পাইলের সময় পরিচিত অপরিবর্তনীয় মানগুলির জন্য const।
  • টাইপ না করা ধ্রুবকগুলি প্রসঙ্গের সাথে খাপ খায়: কোন রূপান্তরের প্রয়োজন নেই৷
  • const ( ... ) গ্রুপ সম্পর্কিত মান ব্লক করে।
  • iota প্রতিটি ব্লকে 0 থেকে শুরু হয় এবং লাইন দ্বারা লাইন বৃদ্ধি পায়।
  • নিদর্শন: enum (= iota), বিটমাস্ক (= 1 << iota), ইউনিট (= 1 << (10*iota))।