उदाहरण 1: गोलांग बेसिक टाइप कास्टिंग
आइए गो में प्रत्यक्ष और बुनियादी कास्टिंग के उदाहरण से शुरुआत करें क्योंकि हमें कहीं भी, वेरिएबल के प्रकार को संशोधित करने के लिए टाइपकास्टिंग की आवश्यकता होती है।
पैकेट मुख्यआयात (
'एफएमटी'
)
समारोह मुख्य () {
था एक्स int यहाँ = 31
और := फ्लोट64 ( एक्स )
एफएमटी . Println ( और )
}
यहां, हम 'int' प्रकार के 'x' नामक एक वेरिएबल को घोषित करके मुख्य फ़ंक्शन से शुरू करते हैं और इसे 31 के मान के साथ असाइन करते हैं। फिर, वेरिएबल 'y' को शॉर्टहैंड असाइनमेंट ऑपरेटर ': =' का उपयोग करके घोषित किया जाता है। 'Y' का प्रकार दाईं ओर की अभिव्यक्ति से स्वचालित रूप से निर्धारित होता है जो 'x' को 'फ्लोट64' में परिवर्तित करने का परिणाम है। तो, इस प्रोग्राम में, 'x' का मान 'फ्लोट64' में बदल दिया जाता है और 'y' को असाइन किया जाता है।
गो में मूल कास्टिंग से प्राप्त परिणाम निम्नानुसार प्रदर्शित होते हैं:
उदाहरण 2: गोलांग इम्प्लिसिट टाइप कास्टिंग
विभिन्न प्रकारों के बीच अंतर्निहित प्रकार की कास्टिंग की अनुमति नहीं है। गो मजबूत टाइपिंग को लागू करता है जिसका अर्थ है कि हम स्पष्ट रूपांतरण के बिना एक प्रकार के मान को दूसरे प्रकार के रूप में सीधे निर्दिष्ट या उपयोग नहीं कर सकते हैं। निम्नलिखित में, हम अंतर्निहित कास्टिंग करने का प्रयास करते हैं जो गो द्वारा अपवाद उत्पन्न करता है:
पैकेट मुख्य
आयात 'एफएमटी'
समारोह मुख्य () {
था पूर्णांक int यहाँ = 9 . 08
एफएमटी . printf ( 'पूर्णांक %g है' , पूर्णांक )
}
यहां वह कोड है जो मुख्य() फ़ंक्शन से शुरू होता है जहां एक 'पूर्णांक' चर को 'int' प्रकार के साथ घोषित किया जाता है। 'पूर्णांक' चर को जो मान दिया गया है वह 9.08 है जो एक फ्लोटिंग-पॉइंट संख्या है। चूँकि हम एक पूर्णांक वैरिएबल को सीधे फ़्लोटिंग-पॉइंट मान निर्दिष्ट करने का प्रयास कर रहे हैं, इसके परिणामस्वरूप एक प्रकार की बेमेल त्रुटि होती है। फिर, हम '%g' प्रारूप विनिर्देशक का उपयोग करके 'पूर्णांक' चर के मान को प्रिंट करने के लिए 'fmt' पैकेज से 'प्रिंटफ' फ़ंक्शन का उपयोग करते हैं।
जैसा कि अपेक्षित था, गोलांग में अंतर्निहित प्रकार की कास्टिंग स्वीकार्य नहीं है। पिछली अंतर्निहित प्रकार की कास्टिंग निम्न त्रुटि उत्पन्न करती है:
उदाहरण 3: गोलांग स्पष्ट प्रकार की कास्टिंग
स्पष्ट प्रकार का रूपांतरण हमें इरादे को स्पष्ट रूप से बताते हुए संगत प्रकारों के बीच मूल्यों को सुरक्षित रूप से परिवर्तित करने में सक्षम बनाता है। यह सुनिश्चित करता है कि हम प्रकार रूपांतरण से अवगत हैं और आकस्मिक प्रकार की त्रुटियों को रोकने में मदद करते हैं। निम्नलिखित स्पष्ट कास्टिंग पर विचार करें:
पैकेट मुख्यआयात 'एफएमटी'
समारोह मुख्य () {
था फ्लोटवैल फ्लोट32 = 6 . 75
था intVal int यहाँ = int यहाँ ( फ्लोटवैल )
एफएमटी . printf ( 'फ्लोट मान %g है \एन ' , फ्लोटवैल )
एफएमटी . printf ( 'पूर्णांक मान %d है' , intVal )
}
यहां, 'फ्लोटवैल' वेरिएबल 'फ्लोट32' प्रकार के साथ बनाया गया है, और इसे '6.75' मान दिया गया है। फिर, एक 'intVal' वैरिएबल को 'int' प्रकार के साथ घोषित किया जाता है। intVal को फ्लोटवैल का मान निर्दिष्ट करने के लिए, प्रकार रूपांतरण का उपयोग किया जाता है। फ्लोटवैल को पूर्णांक मान में बदलने के लिए, इनपुट के रूप में फ्लोटवैल के साथ 'int' फ़ंक्शन का उपयोग किया जाता है। उसके बाद, 'fmt.Printf('फ्लोट वैल्यू %g\n है', फ्लोटवैल)' %g प्रारूप विनिर्देशक का उपयोग करके फ्लोटवैल के मान को प्रिंट करता है जो फ्लोटिंग-पॉइंट मानों को प्रिंट करने के लिए उपयुक्त है। जबकि 'fmt.Printf('पूर्णांक मान %d है', intVal)' कोड लाइन %d प्रारूप विनिर्देशक का उपयोग करके intVal के मान को प्रिंट करती है जो पूर्णांक मानों को मुद्रित करने के लिए उपयुक्त है।
निम्नलिखित आउटपुट कास्टिंग के बाद फ्लोटवैल और इन्टवैल दोनों के लिए मान उत्पन्न करता है:
उदाहरण 4: औसत प्राप्त करने के लिए गोलांग प्रकार की कास्टिंग
इसके बाद, हम दिए गए मानों से औसत संख्या प्राप्त करने के लिए कास्टिंग करते हैं। आइए उस स्रोत कोड को देखें जो निम्नलिखित में दिया गया है:
पैकेट मुख्यआयात 'एफएमटी'
समारोह मुख्य () {
था कुल int यहाँ = 900
था मेरा नंबर int यहाँ = बीस
था औसत फ्लोट32
औसत = फ्लोट32 ( कुल ) / फ्लोट32 ( मेरा नंबर )
एफएमटी . printf ( 'औसत = %f है \एन ' , औसत )
}
यहां, हम प्रारंभ में तीन वेरिएबल घोषित करते हैं। 'कुल' एक पूर्णांक वैरिएबल है जिसे 900 के मान के साथ प्रारंभ किया जाता है। 'MyNumber' एक पूर्णांक वैरिएबल है जिसे 20 के मान के साथ प्रारंभ किया जाता है। गणना की गई औसत को फिर फ्लोट32 'औसत' वैरिएबल में संग्रहीत किया जाता है। फिर गणना करने के लिए औसत सूत्र दिया जाता है। यह सुनिश्चित करने के लिए कि विभाजन एक फ़्लोटिंग-पॉइंट डिवीजन के रूप में किया जाता है, 'कुल' और 'MyNumber' के मानों को प्रकार रूपांतरण का उपयोग करके फ्लोट32 में परिवर्तित किया जाता है। परिकलित औसत को 'औसत' चर को सौंपा गया है। अंत में, '%f\n' प्रारूप स्ट्रिंग जो 'प्रिंटफ' फ़ंक्शन में उपयोग की जाती है, निर्दिष्ट करती है कि एक फ्लोट मान मुद्रित किया जाना चाहिए, उसके बाद एक न्यूलाइन वर्ण।
पिछले कोड में टाइप कास्टिंग लागू करने के बाद औसत के रूप में परिणामी मूल्य प्राप्त किया जाता है:
उदाहरण 5: गोलांग इंट और स्ट्रिंग टाइप कास्टिंग
इसके अतिरिक्त, गो इंट और स्ट्रिंग प्रकारों के बीच कास्टिंग भी प्रदान करता है। हम इसे strconv पैकेज के फ़ंक्शन का उपयोग करके पूरा कर सकते हैं।
पैकेट मुख्यआयात (
'एफएमटी'
'strconv'
)
समारोह मुख्य () {
था एसटीआर डोरी = '1999'
में , _ := strconv . ट्रेलर ( एस )
एफएमटी . Println ( में )
था पूर्णांक int यहाँ = 1999
toStr := strconv . डूब गया ( पूर्णांक )
एफएमटी . Println ( toStr )
}
यहां वह कोड है जो दो वेरिएबल्स की घोषणा से शुरू होता है। 'str' एक स्ट्रिंग वेरिएबल है जिसे '1999' के मान से प्रारंभ किया जाता है और 'पूर्णांक' एक पूर्णांक वैरिएबल है जिसे '1999' के मान से प्रारंभ किया जाता है। उसके बाद, 'strconv.Atoi()' फ़ंक्शन का उपयोग 'str' स्ट्रिंग को पूर्णांक मान में बदलने के लिए किया जाता है। 'v' का लौटाया गया मान परिवर्तित पूर्णांक का प्रतिनिधित्व करता है, और रिक्त '_' पहचानकर्ता का उपयोग Atoi() द्वारा लौटाई गई किसी भी संभावित त्रुटि को अनदेखा करने के लिए किया जाता है।
इसके बाद, पूर्णांक को एक स्ट्रिंग मान में बदलने के लिए strconv.Itoa() फ़ंक्शन का उपयोग किया जाता है। लौटाया गया मान जो 'toStr' है, परिवर्तित स्ट्रिंग का प्रतिनिधित्व करता है।
आउटपुट '1999' स्ट्रिंग से एक पूर्णांक में और वापस एक स्ट्रिंग में रूपांतरण प्रदर्शित करता है जो '1999' का मूल मान उत्पन्न करता है:
उदाहरण 6: स्ट्रिंग और बाइट्स के बीच गोलांग प्रकार की कास्टिंग
इसके अलावा, गो में कास्टिंग स्ट्रिंग और बाइट प्रकारों में भी की जा सकती है। निम्नलिखित कोड स्ट्रिंग्स और बाइट स्लाइस के बीच रूपांतरण प्रदर्शित करते हैं:
पैकेट मुख्यआयात (
'एफएमटी'
)
समारोह मुख्य () {
था रहस्य डोरी = 'सुनो'
था बी 1 [] बाइट = [] बाइट ( myStr )
एफएमटी . Println ( बी 1 )
स्ट्रिंग := डोरी ( बी 1 )
एफएमटी . Println ( स्ट्रिंग )
}
यहां, वेरिएबल्स को पहले 'myStr' और 'b1' के रूप में घोषित किया जाता है, जिन्हें कुछ मानों के साथ आरंभ किया जाता है। फिर, []बाइट(myStr) अभिव्यक्ति प्रकार रूपांतरण का उपयोग करके 'myStr' स्ट्रिंग को बाइट स्लाइस में परिवर्तित करती है। यह परिणामी बाइट स्लाइस को 'बी1' वेरिएबल को निर्दिष्ट करता है। उसके बाद, 'स्ट्रिंग(बी1)' अभिव्यक्ति प्रकार रूपांतरण का उपयोग करके बाइट स्लाइस बी1 को वापस एक स्ट्रिंग में परिवर्तित करती है। यह परिणामी स्ट्रिंग को 'toString' वेरिएबल को निर्दिष्ट करता है।
आउटपुट निम्नलिखित में 'अरे देयर' स्ट्रिंग और इसके संबंधित बाइट स्लाइस प्रतिनिधित्व के बीच रूपांतरण दिखाता है:
उदाहरण 7: वर्गमूल प्राप्त करने के लिए गोलांग टाइप कास्टिंग
अब, हम वर्गमूल परिणाम खोजने के लिए गो में कास्टिंग करते हैं। कोड इस प्रकार रखा गया है:
पैकेट मुख्यआयात (
'एफएमटी'
'गणित'
)
समारोह मुख्य () {
था एन int यहाँ = 177
था SqrtN फ्लोट64
SqrtN = गणित . वर्ग ( फ्लोट64 ( एन ))
एफएमटी . printf ( '%d का वर्गमूल %2f है \एन ' , एन , SqrtN )
}
यहां, 'एन' वेरिएबल को इंट के रूप में घोषित किया गया है और '144' का मान निर्दिष्ट किया गया है। 'SqrtN' वेरिएबल को फ्लोट64 के रूप में घोषित किया गया है और 'n' की गणना की गई वर्गमूल को संग्रहीत करता है। फिर, 'n' के वर्गमूल की गणना करने के लिए Math.Sqrt() फ़ंक्शन को तैनात किया जाता है। चूँकि Math.Sqrt() एक फ्लोट64 तर्क की अपेक्षा करता है, और 'n' का मान फ्लोट64(n) का उपयोग करके फ्लोट64 में परिवर्तित किया जाता है। उसके बाद, '%d का वर्गमूल %% है\n' प्रारूप स्ट्रिंग 'प्रिंटफ' फ़ंक्शन में कॉल करता है जो एक पूर्णांक मान (%d) और एक फ़्लोटिंग-पॉइंट मान (%2f) निर्दिष्ट करता है। '%2f' में '.2' परिशुद्धता विनिर्देशक यह सुनिश्चित करता है कि वर्गमूल दो दशमलव स्थानों के साथ मुद्रित हो।
निम्नलिखित आउटपुट प्राप्त होता है जो दिए गए मान का वर्गमूल दर्शाता है:
निष्कर्ष
गो में कास्टिंग पर अलग-अलग उदाहरणों के साथ चर्चा की गई है जो सभी निष्पादन योग्य हैं। ध्यान रखें कि गो में, टाइपकास्टिंग स्पष्ट है जो मजबूत टाइपिंग को लागू करती है और कोड स्पष्टता और विश्वसनीयता को बढ़ावा देती है।