गो में पॉइंटर्स के साथ मूल्य संशोधन को समझना
गो में, पॉइंटर्स अप्रत्यक्ष पहुंच और मूल्यों के संशोधन की अनुमति देते हैं। हालाँकि, पॉइंटर्स को फ़ंक्शन में पास करते समय यह समझना महत्वपूर्ण है कि पॉइंटर कैसे काम करते हैं। : मूल्य संशोधन
इस कोड पर विचार करें:प्रकार परीक्षण संरचना { वैल्यू int } func मुख्य() { var i टेस्ट = टेस्ट {2} वर पी *टेस्ट = &i एफ(पी) println(i.वैल्यू) //4 } func f(p *टेस्ट) { *पी = परीक्षण{4} }
यहां, फ़ंक्शन f को टेस्ट संरचना के लिए एक संकेतक प्राप्त होता है। एफ के अंदर, डीरेफ़रेंस्ड पॉइंटर (* पी) को 4 के मान के साथ एक नया टेस्ट स्ट्रक्चर सौंपा गया है। यह मुख्य फ़ंक्शन में मूल आई स्ट्रक्चर को प्रभावी ढंग से संशोधित करता है, और आउटपुट 4 है।
type Test struct { Value int }
func main() {
var i Test = Test {2}
var p *Test = &i
f(p)
println(i.Value) // 4
}
func f(p *Test) {
*p = Test{4}
}
अब, कोड को थोड़ा बदलें:टाइप टेस्ट स्ट्रक्चर { वैल्यू इंट } func मुख्य() { var i टेस्ट = टेस्ट {2} वर पी *टेस्ट = &i एफ(पी) println(i.Value) // 2 } func f(p *टेस्ट) { // ? पी = और परीक्षण{4} }
इस मामले में, इंगित मूल्य को संशोधित करने के बजाय, फ़ंक्शन पी पॉइंटर को 4 के मान के साथ एक नई टेस्ट संरचना में पुन: असाइन करता है। चूंकि पी एफ के भीतर एक स्थानीय चर है, इसलिए यह परिवर्तन प्रभावित नहीं करता है मुख्य फ़ंक्शन में मूल i संरचना, और आउटपुट 2 रहता है। स्ट्रक्चर सदस्य तक पहुंचें:
type Test struct { Value int }
func main() {
var i Test = Test {2}
var p *Test = &i
f(p)
println(i.Value) // 2
}
func f(p *Test) {
// ?
p = &Test{4}
}
पी.वैल्यू का उपयोग करके, हम मूल संरचना के वैल्यू फ़ील्ड को संशोधित करते हैं, जिसके परिणामस्वरूप 4 का आउटपुट मिलता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3