GOPATH और GOROOT in Go: सही मान और आम गलतियाँ | PythonLib

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

GOPATH और GOROOT: सही वैल्यू क्या हैं और ये क्यों ज़रूरी हैं?

\n\n

अगर आप Go सीखना शुरू कर रहे हैं, तो देर-सबेर आप GOPATH और GOROOT जैसे शब्दों से ज़रूर टकराएँगे। Stack Overflow पर सबसे ज़्यादा पूछे जाने वाले सवालों में से एक है – "GOPATH और GOROOT की वैल्यू क्या होनी चाहिए?" और यह कोई हैरानी की बात नहीं है। शुरुआती लोग अक्सर इन्हें गलत सेट कर देते हैं और प्रोजेक्ट बिल्ड करते समय अजीबोगरीब एरर का सामना करते हैं।

\n\n

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

\n\n

GOROOT क्या है?

\n\n

GOROOT वह फ़ोल्डर है जहाँ Go कंपाइलर इंस्टॉल होता है। इस फ़ोल्डर के अंदर स्टैंडर्ड पैकेज (fmt, net, os आदि) और go, gofmt जैसी बाइनरी फ़ाइलें होती हैं।

\n\n

ज़्यादातर डेवलपर्स को GOROOT को मैन्युअली सेट करने की ज़रूरत नहीं होती। अगर आपने Go को ऑफिशियल इंस्टॉलर या पैकेज मैनेजर से इंस्टॉल किया है, तो कंपाइलर खुद ही अपना लोकेशन जानता है।

\n\n

GOROOT की मौजूदा वैल्यू कैसे चेक करें?

\n

टर्मिनल खोलें और यह कमांड चलाएँ:

\n
go env GOROOT
\n\n

Linux पर आउटपुट का उदाहरण:

\n
/usr/local/go
\n\n

Windows पर (डिफ़ॉल्ट इंस्टॉलेशन के साथ):

\n
C:\\Program Files\\Go
\n\n

GOROOT कब बदलना चाहिए?

\n
    \n
  • अगर आपने Go फ़ोल्डर को किसी दूसरी जगह शिफ्ट किया है।
  • \n
  • अगर आपके पास Go के कई वर्ज़न इंस्टॉल हैं और आप उनके बीच स्विच करना चाहते हैं।
  • \n
  • अगर आप Go को सोर्स कोड से कंपाइल कर रहे हैं और इसे किसी अलग डायरेक्ट्री में इंस्टॉल किया है।
  • \n
\n\n

बाकी सभी मामलों में GOROOT को अकेला छोड़ दें – Go खुद इसका ध्यान रखेगा।

\n\n

GOPATH क्या है?

\n\n

GOPATH एक और भी दिलचस्प वेरिएबल है। पहले के समय में Go चाहता था कि आपका सारा कोड एक ही वर्कस्पेस में हो। इस वर्कस्पेस को GOPATH के ज़रिए डिफ़ाइन किया जाता था।

\n\n

डिफ़ॉल्ट रूप से GOPATH यहाँ पॉइंट करता है:

\n
    \n
  • Linux/macOS: $HOME/go
  • \n
  • Windows: %USERPROFILE%\\go
  • \n
\n\n

इस फ़ोल्डर के अंदर स्टैंडर्ड स्ट्रक्चर होता है:

\n
go/\n├── bin/        # कंपाइल की गई बाइनरी फ़ाइलें\n├── pkg/        # ऑब्जेक्ट फ़ाइलें और कैश\n└── src/        # आपके प्रोजेक्ट्स का सोर्स कोड\n    ├── github.com/\n    │   └── user/\n    │       └── myproject/\n    └── example.com/\n        └── myapp/
\n\n

GOPATH की मौजूदा वैल्यू कैसे चेक करें?

\n
go env GOPATH
\n\n

GOPATH और GOROOT में क्या डालें? (सही वैल्यू)

\n\n

यहाँ मुख्य सवाल का छोटा जवाब है:

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
वेरिएबलडिफ़ॉल्ट वैल्यू (Linux/macOS)डिफ़ॉल्ट वैल्यू (Windows)
GOROOT/usr/local/goC:\\Program Files\\Go
GOPATH$HOME/go%USERPROFILE%\\go
\n\n

ज़रूरी बात: GOPATH और GOROOT हमेशा अलग-अलग फ़ोल्डर होने चाहिए। इन्हें कभी एक जैसा न सेट करें!

\n\n

आम गलतियाँ और उनका समाधान

\n\n

गलती 1: "GOPATH not set" या "cannot find package" एरर

\n

अगर आप पुराने तरीके (Go 1.11-1.13 से पहले) का उपयोग कर रहे हैं, तो Go पैकेज को $GOPATH/src के अंदर ढूँढता है। अगर आपने अपना प्रोजेक्ट कहीं और रखा है, तो कंपाइलर उसे नहीं ढूँढ पाएगा।

\n\n

समाधान:

\n
    \n
  • या तो प्रोजेक्ट को $GOPATH/src में ले जाएँ।
  • \n
  • या फिर Go Modules का उपयोग करें (आधुनिक तरीका)।
  • \n

ब्लॉग

पुस्तक अनुशंसाएँ