dynamic - गोलांग में गतिशील रूप से लोड पैकेज




go load (4)

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


1.8 के रूप में अब इसके लिए समर्थन है

plugins


नहीं, गो गतिशील रूप से लोड पुस्तकालयों का समर्थन नहीं करता है।

आपकी सबसे अच्छी शर्त प्लगइन को अपने निष्पादन योग्य के रूप में शुरू करना है और सॉकेट के माध्यम से या stdin / stdout के माध्यम से इसके साथ संवाद करना है।

2017 अपडेट

यह उत्तर अब सत्य नहीं है, अब plugins का समर्थन करता plugins


मुझे लगता है कि आप जो खोज रहे हैं वह विशेष कार्य init

यदि आप एक जोड़ते हैं

func init() {

}

पैकेज के अंदर यह पहली बार पैकेज आयात होने पर इसे चलाएगा। यह केवल एक ही बाइनरी में होता है। जैसा कि पहले से ही कहा गया है, गतिशील रूप से लोड पुस्तकालयों का समर्थन नहीं करता है।


आप रनटाइम पर 'प्लगइन' पैकेज को निष्पादित करने पर विचार कर सकते हैं, एक नया प्रोग्राम (कहें, एक अस्थायी निर्देशिका में) exec.Command और निष्पादन के माध्यम से निष्पादित कर सकते हैं। exec.Command , exec.Command("go", "run", files…).Run()

आप here कुछ समान कोड देखेंगे।