जैसा कि यहां और अन्य कई अन्य उत्तरों में सही ढंग से उल्लेख किया गया है, ResponseWriter
एक इंटरफ़ेस है और इस के निहितार्थों का SO के उत्तर और ब्लॉग में विस्तार से वर्णन किया गया है ।
मैं जो कहना चाहता हूं, वह यह है कि जो मुझे लगता है वह बड़ा है और खतरनाक है- यहां गलत धारणा, कि कारण अनुरोध "संदर्भ" द्वारा पारित किया गया है (हालांकि ऐसी कोई चीज वास्तव में गो में मौजूद नहीं है ) यह है कि "हम बदलाव करना चाहते हैं यह सर्वर को दिखाई देता है "।
कुछ उत्तरों का उद्धरण:
[..] यह सिर्फ एक struct है, और जब से हमने यह struct बदल सकते हैं और वेब सर्वर उन परिवर्तनों को देखने करना चाहते हैं, यह एक सूचक हो गया है [..] अतः
[..] अनुरोध करने के लिए हैंडलर जरूरत से सर्वर के लिए दिखाई दे सकता है, बदलता है तो हम बजाय केवल संदर्भ द्वारा इसे पारित कर रहे हैं मूल्य द्वारा [..] अतः
यह गलत है ; वास्तव में डॉक्स ने अनुरोध को छेड़छाड़ / छेड़छाड़ के खिलाफ स्पष्ट रूप से चेतावनी दी है :
शरीर को पढ़ने के अलावा, हैंडलर को प्रदान किए गए अनुरोध को संशोधित नहीं करना चाहिए।
इसके विपरीत, नहीं? :-)
यदि आप अनुरोध बदलना चाहते हैं, जैसे कि एक मिडलवेयर चेन में अगले हैंडलर पर जाने से पहले एक ट्रेसिंग हेडर को संलग्न करें, तो आपको अनुरोध को कॉपी करना होगा और कॉपी किए गए संस्करण को चेन से नीचे पारित करना होगा।
आने वाले अनुरोध के संशोधनों को अनुमति देने के लिए व्यवहार को बदलने का अनुरोध गो टीम के साथ उठाया गया है, लेकिन इस तरह से कुछ बदलने से शायद कम से कम कुछ मौजूदा कोड अप्रत्याशित रूप से टूट जाएंगे।
यदि हम स्पष्ट रूप से लोगों से अनुरोध को म्यूट न करने के लिए कह रहे हैं तो पॉइंटर का उपयोग क्यों करें? प्रदर्शन , Request
एक बड़ी संरचना है और इसे कॉपी करने से प्रदर्शन में गिरावट आ सकती है, खासकर लंबी मिडलवेयर चेन को ध्यान में रखकर। टीम को एक संतुलन बनाना था, निश्चित रूप से एक आदर्श समाधान नहीं था, लेकिन ट्रेडऑफ़ स्पष्ट रूप से यहां प्रदर्शन (एपीआई के बजाय) के पक्ष में हैं।