मैं आज जिस चीज़ पर काम कर रहा हूं उसके लिए मैं इस पर गड़बड़ कर रहा था, और यह अपेक्षा की तुलना में अधिक परेशान था। अंत में, यह मेरे द्वारा किए गए विभिन्न परीक्षणों में (मेरे लिए 'कठोर' परीक्षण नहीं) के लिए काम करना प्रतीत होता था।
goPath := strings.Split(os.Getenv("GOPATH"), string(os.PathListSeparator))
if len(goPath) == 0 {
goPath = append(goPath, build.Default.GOPATH)
} else if goPath[0] == "" {
goPath[0] = build.Default.GOPATH
}
ध्यान दें कि मैं केवल 1 पथ का उपयोग करने के लिए यदि अनेक पथों GOPATH पर सूचीबद्ध हैं का फैसला किया है, मैं कुछ सूचीबद्ध 1 से अधिक पथ होगा संदेह है, और पहले होगा जहां go get
स्रोत डालता है (मुझे लगता है कि के रूप में)। यह कोड खाता नहीं है कि पथ मान्य हैं या नहीं।
यह भी ध्यान दें कि GOPATH प्राप्त करने के बाद फ़ाइल पथ बनाने के लिए, मुझे path/filepath.Join()
path.Join()
का उपयोग करना पड़ा। यदि पहले तर्क में \, और/दूसरों के लिए पूर्व में विंडोज़ का उपयोग किया जाएगा। यद्यपि खिड़कियां जाहिर तौर पर पथों को स्वीकार कर सकती हैं, मेरे सभी पाथ और गोपाथ-जैसे पर्यावरणीय चर सामान्य \ विंडोज़ के साथ लिखे गए हैं। path.Join()
एक अमान्य पथ का उत्पादन/उपयोग किया जाता है।
स्रोत
2017-10-20 18:07:35
1.8 पर जाएं, GOPATH env var वैकल्पिक है। क्या होगा यदि उपयोगकर्ता के पास यह नहीं है? क्या डिफ़ॉल्ट पाने का कोई तरीका है? मुझे लगता है कि रन रनटाइम के पास गोपाथ पाने का एक तरीका होना चाहिए, जिससे आप इसे अपने लिए समझ सकें। – tothemario
@ टोथमेरियो मैंने एक उत्तर पोस्ट किया कि आप गो 1.8 के बाद वैध 'GOPATH' कैसे प्राप्त कर सकते हैं। हालांकि, मैं मानता हूं कि आदर्श रूप से रनटाइम को उपयोगकर्ता के 'गोपाथ' प्राप्त करने का एक तरीका प्रदान करना चाहिए। – tmh
@ टोथेमारियो ने गो 1.8 के डिफ़ॉल्ट गो पथ कार्यान्वयन से कोड का उपयोग करके उत्तर अपडेट किया। – codefreak