मैं समझता हूं कि अगर कोड को संरचित किया गया है तो यह इंटरफेस के लिए प्रोग्राम किया गया है, यह नकली करने के लिए तुच्छ है; हालांकि, मैं एक कोड बेस के साथ काम कर रहा हूं जिसे मैं नहीं बदल सकता (यह मेरा नहीं है) और यह मामला नहीं है।गोलांग बंदर पैचिंग
यह कोड बेस भारी अंतःस्थापित है और कुछ भी इंटरफ़ेस के लिए प्रोग्राम नहीं किया गया है, केवल structs, इसलिए कोई निर्भरता इंजेक्शन नहीं है।
structs, स्वयं में केवल अन्य structs होते हैं, इसलिए मैं इस तरह से नकल नहीं कर सकता। मुझे विश्वास नहीं है कि मैं विधियों के बारे में कुछ भी कर सकता हूं, और मौजूद कुछ कार्य चर नहीं हैं, इसलिए कोई रास्ता नहीं है कि मैं उन्हें स्वैप करने के बारे में जानता हूं। गोलांग में विरासत एक चीज नहीं है, इसलिए यह कोई भी नहीं है।
पायथन जैसी पटकथा भाषाओं में, हम रनटाइम, उर्फ बंदर पैच पर ऑब्जेक्ट्स को संशोधित कर सकते हैं। क्या कुछ तुलनात्मक है कि मैं गोलांग में कर सकता हूं? अंतर्निहित कोड को छूए बिना परीक्षण/बेंचमार्क करने के लिए कुछ तरीका जानने का प्रयास कर रहा है।
मैं यह सुनिश्चित करना चाहता हूं कि मैं इसे सही ढंग से समझ रहा हूं। आप जिस स्ट्रक्चर के साथ काम कर रहे हैं, उसे लपेटने वाली संरचना को परिभाषित करने का सुझाव दे रहे हैं। नवप्रवर्तनित संरचना पर विधियों को परिभाषित करें जो लपेटा हुआ संरचना के तरीकों को बुलाते हैं। रैपर स्ट्रक्चर पर एक इंटरफ़ेस को परिभाषित करें, फिर अंतर्निहित तर्क के जो भी सबसेट को मॉक आउट करने की आवश्यकता है, उसका चयन करें? अगर मेरी व्याख्या सही है, ऐसा लगता है कि मैं बस इतना कोड लिख रहा हूं कि यह इतना अंतर्निहित है। शायद यह उम्मीद की जा सकती है - अनुमान लगाएं कि कोई विकल्प नहीं हो सकता है। –
कि, दुर्भाग्यपूर्ण यह हो सकता है, वही है जो मैं सुझाव दे रहा हूं। – sberry
आपको उन विधियों को कॉल/मॉक करने की आवश्यकता नहीं है जिन्हें आपको ओवरराइड करने की आवश्यकता नहीं है। आप मूल प्रकार को अपने प्रकार के अंदर एम्बेड करते हैं, जो विधियों को बढ़ावा देता है, और फिर केवल उन तरीकों को ओवरराइड करता है जिन्हें आप चाहते हैं: https://play.golang.org/p/oHW1JX8iFb – elithrar