"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मैं गो में कंडीशनल स्टेटमेंट के अंदर वेरिएबल की घोषणा क्यों नहीं कर सकता?

मैं गो में कंडीशनल स्टेटमेंट के अंदर वेरिएबल की घोषणा क्यों नहीं कर सकता?

2024-11-09 को प्रकाशित
ब्राउज़ करें:451

Why Can't I Declare Variables Inside Conditional Statements in Go?

त्रुटि: सशर्त बयानों के अंदर परिवर्तनीय घोषणाएं

जब पहली बार गो का सामना करते हैं, तो आप सशर्त बयानों के भीतर परिवर्तनीय घोषणा के बारे में भ्रम का सामना कर सकते हैं (उदाहरण के लिए, यदि -अन्य)। यह समस्या तब उत्पन्न होती है जब चर (उदाहरण के लिए, req, er) को सशर्त ब्लॉक के अंदर घोषित और असाइन किया जाता है।

परिवर्तनीय दायरा: ब्लॉक स्तर को समझना

गो में, चर एक विशिष्ट दायरे में परिभाषित किया गया है, जो उस ब्लॉक तक सीमित है जिसमें उन्हें घोषित किया गया है। निम्नलिखित उदाहरण पर विचार करें:

package main

import "fmt"

func main() {
    a := 1
    fmt.Println(a)
    {
        // New scope
        a := 2
        fmt.Println(a)
    }
    fmt.Println(a) // Prints 1
}

आउटपुट दर्शाता है कि नेस्टेड दायरे के भीतर a के मान को पुन: असाइन करने से उस दायरे के बाहर इसके मान पर कोई प्रभाव नहीं पड़ता है। ऐसा इसलिए है क्योंकि a को स्थानीय रूप से आंतरिक दायरे में घोषित किया जाता है, जिससे वेरिएबल का एक नया उदाहरण तैयार होता है, जैसे:

var a int = 1
var b int = 2
fmt.Println(a)
fmt.Println(b)

सशर्त बयानों में अवधारणा को लागू करना

सशर्त बयानों में चर घोषित करने का प्रयास करते समय:

if condition {
    var req *http.Request
    var er error
}

आपको "req घोषित किया गया और उपयोग नहीं किया गया" या "घोषित किया गया और उपयोग नहीं किया गया" बताते हुए एक त्रुटि का सामना करना पड़ेगा क्योंकि चर केवल सशर्त विवरण के ब्लॉक के भीतर दिखाई देते हैं।

समाधान: सशर्त ब्लॉक के बाहर चर घोषित करें

इस समस्या को हल करने के लिए, सशर्त ब्लॉक के बाहर चर घोषित किया जाना चाहिए:

var req *http.Request
var er error
if strings.EqualFold(r.Method, "GET") || strings.EqualFold(r.Method, "") {
    req, er = http.NewRequest(r.Method, r.Uri, b)
} else {
    req, er = http.NewRequest(r.Method, r.Uri, b)
}

ऐसा करने से, वेरिएबल पूरे फ़ंक्शन में उपलब्ध होते हैं, यह सुनिश्चित करते हुए कि वे सही ढंग से प्रारंभ किए गए हैं। याद रखें, कोड स्पष्टता बनाए रखने और अप्रत्याशित व्यवहार को रोकने के लिए गो में वेरिएबल स्कोपिंग महत्वपूर्ण है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3