तो जैसे एक struct को देखते हुए पर प्रतिबिंब:golang - एम्बेडेड structs
type B struct {
X string
Y string
}
type D struct {
B
Z string
}
मैं डी पर विचार करने और करने के लिए खेतों एक्स प्राप्त करना चाहते हैं, वाई, जेड
Intuitively, समाधान प्रयास करने से पहले, मैं मान रहा था कि मैं संरचना डी को पार करने और प्रतिबिंब (एक्स, वाई, जेड) का उपयोग करके सभी क्षेत्रों को प्राप्त करने में सक्षम होगा और बी
से निपटने के लिए नहीं होगा, लेकिन जैसा कि आप देख सकते हैं, मैं केवल एम्बेडेड देखता हूं प्रतिबिंब का उपयोग कर संरचना बी और इसके खेतों में नहीं।
http://play.golang.org/p/qZQD5GdTA8
वहाँ एक रास्ता जब डी को दर्शाती मैं बी पूरी तरह से पारदर्शी बना सकते हैं है?
मुझे यह क्यों चाहिए?
एक सामान्य संरचना इमेजिंग (यहां उदाहरण में बी), जिसे एम्बेडिंग का उपयोग करके कई अन्य structs में उपयोग किया जाता है। प्रतिबिंब का उपयोग करके, डी को एक अलग पैकेज में डी को दूसरी समान संरचना में कॉपी करना है। प्रतिलिपि बनाने के लिए गंतव्य संरचना में सभी विशेषताओं को स्पष्ट रूप से रखा जाएगा (वहां कोई एम्बेडिंग नहीं है)। इसलिए स्रोत से गंतव्य तक एक मेल नहीं है (एम्बेडेड बनाम कोई एम्बेडिंग नहीं) लेकिन सभी विशेषताओं को स्पष्ट रूप से रखा गया है। मैं प्रत्येक संरचना के लिए कस्टम समाधान नहीं बनाना चाहता हूं।
शायद आप की जाँच करनी चाहिए अगर यह 'पारदर्शिता' ओपी उम्मीद कर रही है अनुकरण करने के लिए है? यानी '' यदि v.Kind() == प्रतिबिंबित करें। संरचना && v. अनामित '' ' – themihai