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

गो में किसी संरचना को कैसे परिवर्तित करें: एम्बेडिंग, मैन्युअल प्रतिलिपि, या स्पष्ट रूपांतरण?

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

How to Convert a Struct in Go: Embedding, Manual Copying, or Explicit Conversion?

गो में संरचना रूपांतरण

निम्नलिखित दो संरचनाओं पर विचार करें:

type A struct {
    a int
    b string
}

type B struct {
    A
    c string
}

मान लीजिए कि आपके पास प्रकार ए का एक चर है और आप इसे प्रकार बी में परिवर्तित करना चाहते हैं। क्या यह गो में संभव है, या क्या आपको फ़ील्ड को मैन्युअल रूप से कॉपी करने या एक स्पष्ट रूपांतरण विधि बनाने की आवश्यकता है?

विधि 1: एंबेडेड स्ट्रक्चर असाइनमेंट

जैसा कि आपने अपने प्रश्न में बताया है, इस उद्देश्य के लिए एम्बेडिंग का उपयोग किया जा सकता है। ए को बी में एम्बेड करके, आप टाइप ए के एक वेरिएबल को केवल एम्बेडेड फ़ील्ड में निर्दिष्ट करके टाइप बी में परिवर्तित कर सकते हैं। उदाहरण के लिए:

func main() {
    structA := A{a: 42, b: "foo"}
    structB := B{A: structA} // Embed structA into structB
}

यह दृष्टिकोण B का एक नया उदाहरण बनाता है जिसमें इसके एम्बेडेड फ़ील्ड में A से डेटा शामिल होता है।

विधि 2: मैन्युअल फ़ील्ड प्रतिलिपि बनाना

वैकल्पिक रूप से, आप फ़ील्ड को A से B तक मैन्युअल रूप से इस प्रकार कॉपी कर सकते हैं:

func main() {
    structA := A{a: 42, b: "foo"}
    structB := B{
        A: structA, // Copy fields from structA
        c: "bar",
    }
}

इस विधि में बी का एक नया उदाहरण बनाना और ए से मैन्युअल रूप से फ़ील्ड निर्दिष्ट करना शामिल है।

विधि 3: स्पष्ट रूपांतरण विधि

एक अन्य विकल्प एक स्पष्ट रूपांतरण विधि बनाना है जो ए को बी में परिवर्तित करती है। यदि आपके पास जटिल रूपांतरण तर्क है तो यह उपयोगी हो सकता है। हालाँकि, इस मामले में यह दृष्टिकोण आवश्यक नहीं है, क्योंकि उपरोक्त विधियाँ वांछित रूपांतरण प्राप्त करने का एक सीधा तरीका प्रदान करती हैं।

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

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

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

Copyright© 2022 湘ICP备2022001581号-3