मुख्य सामग्री पर जाएं
मॉड्यूल 1 · पाठ 3 का 5पाठ्यक्रम में 3/50~10 min
मॉड्यूल पाठ (3/5)

स्थिरांक और iota

स्थिरांक संकलन समय पर ज्ञात अपरिवर्तनीय मान हैं। गो में वे हैं 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

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 मान के साथ एक स्थिर पीआई घोषित करें, फिर इसे मुख्य के अंदर प्रिंट करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

`const PI = 3.14` मुख्य के बाहर, पैकेज स्तर पर जाता है।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम#go.m1.l3.e2
प्रयास: 0लोड हो रहा है...

आईओटीए का उपयोग करके 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 से शुरू होता है और लाइन दर लाइन बढ़ता जाता है।
  • पैटर्न: एनम (= iota), बिटमास्क (= 1 << iota), इकाइयां (= 1 << (10*iota))।