मैंने कई गो परियोजनाओं का अध्ययन किया है और इसमें काफी भिन्नता है। आप यह बता सकते हैं कि C से कौन आ रहा है और कौन जावा से आ रहा है, पूर्व के रूप में एक mainपैकेज में प्रोजेक्ट रूट डायरेक्टरी में सब कुछ के बारे में है , और बाद वाला सब कुछ एक srcडायरेक्टरी में रखता है । हालांकि न तो इष्टतम है। प्रत्येक के परिणाम हैं क्योंकि वे आयात पथों को प्रभावित करते हैं और दूसरे उन्हें कैसे पुन: उपयोग कर सकते हैं।
सर्वोत्तम परिणाम प्राप्त करने के लिए मैंने निम्नलिखित दृष्टिकोण पर काम किया है।
myproj/
main/
mypack.go
mypack.go
कहाँ mypack.goहै package mypackऔर main/mypack.goहै (जाहिर है) package main।
यदि आपको अतिरिक्त समर्थन फ़ाइलों की आवश्यकता है तो आपके पास दो विकल्प हैं। या तो उन सभी को रूट डायरेक्टरी में रखें, या एक उपनिर्देशिका में निजी समर्थन फाइलें डालें lib। उदाहरण के लिए
myproj/
main/
mypack.go
myextras/
someextra.go
mypack.go
mysupport.go
या
myproj.org/
lib/
mysupport.go
myextras/
someextra.go
main/
mypack.go
mypage.go
फ़ाइलों को केवल एक libनिर्देशिका में रखा जाए, यदि वे किसी अन्य परियोजना द्वारा आयात किए जाने का इरादा नहीं रखते हैं। दूसरे शब्दों में, यदि वे निजी सहायता फाइलें हैं। libनिजी इंटरफेस से अलग सार्वजनिक होने के पीछे यही विचार है।
इस तरह से काम करना आपको myproj.org/mypackअन्य परियोजनाओं में कोड का पुन: उपयोग करने के लिए एक अच्छा आयात मार्ग देगा । आप का उपयोग करते हैं libतो आंतरिक समर्थन फ़ाइलों, एक आयात रास्ता है कि इस बात का संकेत है होगा myproj.org/lib/mysupport।
परियोजना का निर्माण करते समय main/mypack, उदाहरण के लिए , उपयोग करें go build main/mypack। यदि आपके पास एक से अधिक निष्पादन योग्य हैं, तो आप mainअलग प्रोजेक्ट बनाने के बिना भी उन्हें अलग कर सकते हैं । जैसे main/myfoo/myfoo.goऔर main/mybar/mybar.go।