संपादित करें: संबंधित आयात पथ गो में जाने का तरीका नहीं हैं। दस्तावेज़ीकरण की कमी सापेक्ष पथ की लोकप्रियता के बारे में कुछ दिखाती है, और मुझे उनका उपयोग करने का कोई कारण नहीं दिखता है। जाओ अनुशंसित कोड संगठन बहुत अच्छी तरह से काम करता है। प्रत्येक पैकेज में एक अद्वितीय आयात पथ होना चाहिए और उसी आयात पथ का उपयोग करके हर जगह आयात किया जाना चाहिए।
देखें कि github.com/ha/doozerd/peer
imports its neighbors जैसे पैकेज कैसे देखें। गो परियोजनाओं के बीच यह एक आम प्रथा है और मैंने इसे कई बार देखा है। पैकेज camlistore.org/pkg/auth
(GitHub पर भी; गो के मुख्य लेखकों में से एक द्वारा लिखित) पूर्ण पथ से camlistore.org/pkg/netutil
आयात करता है।
भले ही आपके पास एक ही प्रोजेक्ट में दोनों आदेश और पुस्तकालय हैं, यह दृष्टिकोण काम करता है। आपके मूल प्रश्नों में आपने बुद्धिमानी से सर्वोत्तम प्रथाओं के लिए कहा है। मैंने इस मामले पर सर्वोत्तम प्रथाओं को समझाने में अपनी पूरी कोशिश की।
आयात पथ गो में सापेक्ष नहीं हो सकते हैं। मैं How to Write Go Code पढ़ने की अनुशंसा करता हूं, गो परियोजनाओं को व्यवस्थित करने पर आवश्यक पढ़ने। यहां एक संक्षिप्त अवलोकन है:
अपने गो विकास के लिए ~/go
जैसी निर्देशिका बनाएं। फिर कहते हैं:
$ export GOPATH=~/go
$ mkdir $GOPATH/{src,bin,pkg}
$GOPATH/src
अपने सभी जाओ संकुल के लिए स्रोत कोड, यहां तक कि लोगों को अपने डाउनलोड go get
साथ रखती है। bin
और pkg
संकलन के आउटपुट रखें। पैकेज नाम के साथ पैकेज main
निष्पादन योग्य बाइनरी के लिए आदेश और उपज हैं जो $GOPATH/bin
पर जाते हैं। अन्य पैकेज पुस्तकालय हैं और उनकी संकलित ऑब्जेक्ट फाइलें $GOPATH/pkg
में रखी गई हैं।
अब यदि आप अपना कोड $GOPATH/src/matt/meme
में डालते हैं, तो आप इसे import "matt/meme"
द्वारा आयात कर सकते हैं। आपके पैकेज नामों के लिए उपसर्ग का उपयोग करने और मानक पुस्तकालयों के लिए छोटे पैकेज नाम छोड़ने की अनुशंसा की जाती है। यही कारण है कि मैंने $GOPATH/src/meme
के बजाय $GOPATH/src/matt/meme
का उपयोग किया।
इस विचार के आसपास अपना कोड व्यवस्थित करें।
मैंने इसे दो अलग-अलग तरीकों से आजमाया और मुझे आपके द्वारा उल्लेख की गई अस्पष्ट त्रुटि दिखाई नहीं दे रही थी। क्या आपका मतलब है कि आपको शब्द संदिग्ध पाया गया है या संदेश पाठ में संदिग्ध शब्द शामिल है। मैंने कोशिश की दो तरीकों को गोपाट के भीतर मेमे/सेमीडी/मेमे, और फिर गोपाथ के बाहर थे। दोनों मामलों में एक सापेक्ष आयात पथ मेरे लिए ठीक काम करता है। क्या आप इस बारे में अधिक जानकारी दे सकते हैं कि आपके लिए क्या काम नहीं कर रहा है? – Sonia
@Sonia क्या आपने गो टूल के साथ प्रयास किया था? मैं और अधिक जानकारी जोड़ूंगा। –
हां। मुझे लगता है कि आपके पास मेमे में एक पैकेज था और मेमे/सेमीडी/मेमे में निष्पादन योग्य था। GOPATH मामले के लिए, निष्पादन योग्य पर चलाएं या इंस्टॉल करें बस काम किया। आउट-ऑफ-जीओपीएटीएच मामले के लिए मैंने मेमो पैकेज को टूल 6 जी के साथ संकलित किया और टूल पैक पर जाया। मुख्य पैकेज में आयात को .a को इंगित करने के लिए बस ../../meme होना आवश्यक था, लेकिन अन्यथा टूल 6 जी पर जाएं और टूल 6l पर जाएं जो एक निष्पादन निष्पादन योग्य है जो पैकेज तक पहुंचा। – Sonia