Go में एक एप्लिकेशन पैकेजों में व्यवस्थित होता है। एक पैकेज एक ही फोल्डर में रखी सोर्स फाइलों का समूह होता है। एक फोल्डर की सभी सोर्स फाइलों के शीर्ष पर एक ही पैकेज नाम होना चाहिए। परंपरा से पैकेजों के नाम उस फोल्डर के नाम पर रखे जाते हैं जिसमें वे होते हैं।
package greeting
Go पैकेजों की एक विस्तृत मानक लाइब्रेरी देता है, जिन्हें आप अपने प्रोग्राम में import कीवर्ड का उपयोग करके इस्तेमाल कर सकते हैं।
मानक लाइब्रेरी के पैकेजों को उनके नाम से इंपोर्ट किया जाता है।
package greeting
import "fmt"
एक से अधिक पैकेजों को कोष्ठकों में लिखकर एक साथ इंपोर्ट किया जा सकता है।
package greeting
import (
"errors"
"fmt"
)
तृतीय-पक्ष पैकेजों को उनके स्थान के URL का उपयोग करके इंपोर्ट किया जाता है। इंपोर्ट करते समय किसी पैकेज को उपनाम दिया जा सकता है। इसका उपयोग पैकेज नामों के टकराव से बचने के लिए किया जा सकता है:
package greeting
import (
"errors"
errs "github.com/pkg/errors"
)
इसके बाद इंपोर्ट किए गए पैकेज को उसके नाम या उपनाम से संबोधित किया जाता है:
// using the internal errors package
errors.New("Connection not established")
// using the errors package located at github.com/pkg/errors by alias
errs.New("Connection not established")
Go यह निर्धारित करता है कि किसी आइटम को अन्य पैकेजों के कोड से कॉल किया जा सकता है या नहीं, यह इस बात पर निर्भर करता है कि उसे कैसे घोषित किया गया है।
किसी फंक्शन, टाइप, वेरिएबल या कॉन्स्टेंट को बाहर से दिखाई देने योग्य बनाने के लिए (जिसे exported कहा जाता है), नाम का पहला अक्षर बड़ा होना चाहिए।
यह उसी तरह है जैसे Java जैसी अन्य प्रोग्रामिंग भाषाएँ public और private जैसे एक्सेस मॉडिफायर इस्तेमाल करती हैं।
package greeting
// Hello is a public function (callable from other packages).
func Hello(name string) string {
return "Hello " + name
}
// hello is a private function (not callable from other packages).
func hello(name string) string {
return "Hello " + name
}
यही बात कस्टम struct टाइपों में फील्ड नामों पर भी लागू होती है: बड़े अक्षर से शुरू होने वाले फील्ड नाम बाहर से दिखाई देते हैं, छोटे अक्षर से शुरू होने वाले नहीं।