What are Packages in Go?
Packages Go की एक fundamental unit हैं, जिनका उपयोग code को modular और organized रखने के लिए किया जाता है। एक package एक directory में organized Go source files का collection होता है। प्रत्येक Go file को एक specific package का हिस्सा होना चाहिए। Packages के उपयोग से आप reusable components बना सकते हैं, जिन्हें अन्य projects में import और use किया जा सकता है।
Types of Packages
- Standard Packages: ये Go की standard library का हिस्सा होते हैं और Go installation के साथ आते हैं, जैसे
fmt
,os
,math
, आदि। - Custom Packages: ये packages आप खुद define करते हैं, और इन्हें अन्य files या projects में import करके use किया जा सकता है।
1. Basic Structure of a Package
Go में प्रत्येक source file को एक package से belong करना चाहिए। Package declaration हमेशा file के top पर होती है।
Example: Package Declaration
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Explanation:
package main:
यह declaration बताती है कि यह filemain
package का हिस्सा है।main
package special package है, जो एक executable program के entry point के रूप में कार्य करता है।import "fmt":
यह statement Go की standard library सेfmt
package को import करता है।
2. Creating and Using Custom Packages
आप अपने custom packages बना सकते हैं और उन्हें अन्य files या projects में import कर सकते हैं। Custom packages का उपयोग code को reusable और modular बनाने के लिए किया जाता है।
Step 1: Creating a Custom Package
सबसे पहले, एक directory बनाएं जिसमें आपका custom package होगा। मान लीजिए हमारे पास एक mathutils
नाम का package है।
Directory Structure:
myproject/
main.go
mathutils/
mathutils.go
mathutils/mathutils.go
package mathutils
// Add function adds two integers
func Add(a int, b int) int {
return a + b
}
Explanation:
package mathutils:
यह filemathutils
नाम के package का हिस्सा है।func Add(a int, b int) int:
यहAdd
function है जो दो integers को जोड़ता है।
Step 2: Using the Custom Package
अब हम main.go
file में mathutils
package को import करके use करेंगे।
main.go
package main
import (
"fmt"
"myproject/mathutils"
)
func main() {
result := mathutils.Add(5, 7)
fmt.Println("Sum:", result)
}
Explanation:
import "myproject/mathutils":
यह statement custommathutils
package को import करता है।mathutils.Add(5, 7):
हमmathutils
package केAdd
function को call करके उसका output प्राप्त करते हैं।
3. Package Initialization
Go में हर package के लिए एक optional init
function होता है जो package load होने के समय automatically execute होता है। init
functions का उपयोग initialization tasks के लिए किया जाता है।
Example: Using init Function
package mathutils
import "fmt"
func init() {
fmt.Println("mathutils package initialized")
}
// Add function adds two integers
func Add(a int, b int) int {
return a + b
}
Explanation:
func init():
यह function package initialization के समय automatically execute होता है। इसका उपयोग setup tasks के लिए किया जा सकता है।
4. Exported and Unexported Identifiers
Go में किसी भी function, variable, या struct को अगर आप दूसरे packages में accessible बनाना चाहते हैं, तो आपको उसका नाम capital letter से शुरू करना होगा। ऐसा करने से वह identifier "exported" हो जाता है।
Example: Exported and Unexported Identifiers
package mathutils
// Exported function (can be accessed from other packages)
func Add(a int, b int) int {
return a + b
}
// Unexported function (cannot be accessed from other packages)
func subtract(a int, b int) int {
return a - b
}
Explanation:
Add:
यह function exported है, इसलिए इसे अन्य packages से access किया जा सकता है।subtract:
यह function unexported है, इसलिए यह सिर्फmathutils
package के अंदर ही accessible होगा।
5. Aliasing Imports
आप किसी imported package को alias भी दे सकते हैं, जिससे code को concise और readable बनाया जा सकता है।
Example: Aliasing Imports
package main
import (
"fmt"
m "myproject/mathutils"
)
func main() {
result := m.Add(5, 7)
fmt.Println("Sum:", result)
}
Explanation:
import m "myproject/mathutils":
यहांmathutils
package को aliasm
दिया गया है, जिससे code को अधिक concise बनाया गया है।
6. Blank Identifier (_) Import
कभी-कभी आप सिर्फ package का side-effect (जैसे initialization) चाहते हैं, न कि उसके functions या variables को। ऐसे में आप blank identifier _
का उपयोग कर सकते हैं।
Example: Blank Identifier Import
package main
import (
_ "myproject/mathutils" // Only initialize the package, no need to use it
)
func main() {
// No direct usage of mathutils package
}
Explanation:
import _ "myproject/mathutils":
यह package सिर्फ initialize होगा, लेकिन इसका कोई function या variable use नहीं किया जाएगा।
7. Documenting Packages
Go में आप अपने packages को बेहतर तरीके से document कर सकते हैं, जिससे दूसरे developers के लिए उसे समझना आसान हो जाता है। GoDoc tool automatically आपके Go code से documentation generate कर सकता है।
Example: Documenting a Package
// Package mathutils provides basic mathematical operations.
package mathutils
// Add adds two integers and returns the sum.
func Add(a int, b int) int {
return a + b
}
Explanation:
// Package mathutils provides basic mathematical operations.:
यह package-level documentation है।// Add adds two integers and returns the sum.:
यह function-level documentation है।
Summary
- Packages: Go में code को organize करने और reusable components बनाने के लिए packages का उपयोग किया जाता है।
- Standard and Custom Packages: Go में standard packages के अलावा आप custom packages भी बना सकते हैं।
- Initialization (init Function): Packages में
init
function का उपयोग initialization tasks के लिए किया जा सकता है। - Exported and Unexported Identifiers: Capital letter से शुरू होने वाले identifiers exported होते हैं, और अन्य packages से accessible होते हैं।
- Aliasing Imports: Packages को import करते समय आप उन्हें alias भी दे सकते हैं।
- Blank Identifier Import: सिर्फ package initialization के लिए blank identifier
_
का उपयोग किया जा सकता है। - Documentation: GoDoc tool का उपयोग करके आप अपने packages की documentation आसानी से generate कर सकते हैं।
Packages Go में code organization का एक महत्वपूर्ण हिस्सा हैं और इन्हें समझना और effectively use करना Go programming में mastery हासिल करने के लिए आवश्यक है। अगर आपको packages के बारे में और जानकारी चाहिए या कोई specific सवाल है, तो बताइए!
No comments:
Post a Comment