http.Request में पॉइंटर आवश्यकता को समझना
गो प्रोग्रामिंग भाषा में, बड़ी संरचनाओं को कुशलतापूर्वक संभालने के लिए पॉइंटर आवश्यक हैं। http.Request प्रकार, जो आने वाले HTTP अनुरोधों का प्रतिनिधित्व करता है, ऐसी संरचना का एक प्रमुख उदाहरण है।
गो के सिंटैक्स में, एक पॉइंटर एक डेटा प्रकार है जो किसी अन्य मान का पता संग्रहीत करता है। जब कोई पैरामीटर पॉइंटर द्वारा पारित किया जाता है, तो फ़ंक्शन के भीतर उस पैरामीटर में किया गया कोई भी परिवर्तन विश्व स्तर पर परिलक्षित होता है।
http.Request के मामले में, संरचना पर्याप्त है और इसे कॉपी करना कम्प्यूटेशनल रूप से महंगा होगा। पॉइंटर का उपयोग करने से फ़ंक्शन को सीधे मूल संरचना तक पहुंचने की अनुमति मिलती है, जिससे मेमोरी और प्रोसेसिंग समय की बचत होती है।
निम्न उदाहरण पर विचार करें:
// Using a pointer
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("hello world"))
})
यदि * को http.Request प्रकार से हटा दिया जाता है, तो एक त्रुटि संदेश आएगा:
cannot use func literal (type func(http.ResponseWriter, http.Request)) as type func(http.ResponseWriter, *http.Request) in argument to http.HandleFunc
के तर्क में func(http.ResponseWriter, *http.Request) टाइप करें, ऐसा इसलिए है क्योंकि HTTP हैंडलर फ़ंक्शन (HandleFunc) एक फ़ंक्शन की अपेक्षा करता है जो एक रिस्पॉन्सराइटर और एक पॉइंटर को अनुरोध के रूप में तर्क के रूप में लेता है। किसी संरचना का सूचक प्रभावी रूप से मूल संरचना का एक संदर्भ होता है, जो फ़ंक्शन के भीतर किए गए संशोधनों को इसके बाहर दिखाई देने की अनुमति देता है।
इसके विपरीत, एक शाब्दिक फ़ंक्शन तुरंत निष्पादित होता है और एक मान लौटाता है। यह स्टेटफुल HTTP रिक्वेस्ट ऑब्जेक्ट को संभालने के लिए उपयुक्त नहीं है। वैश्विक स्तर पर प्रतिबिंबित।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3