गोलैंग चीत शीट
उपयोगी गो (Golang) कमांड और संरचनाएँ
यहाँ बुनियादी गो प्रोग्राम संरचना है, त्रुटि प्रबंधन पैटर्न और चैनल्स बनाम गोरूटीन्स की तुलना।
गो भाषा चीतशीट
बुनियादी सिंटैक्स
पैकेज घोषणा
package main
पैकेज आयात करना
import "fmt"
import (
"fmt"
"math"
)
मुख्य फंक्शन
func main() {
// आपका कोड यहाँ
}
चर और प्रकार
चर घोषणा
var name string
var age int = 25
x := 10 // छोटी घोषणा
बुनियादी प्रकार
- bool
- string
- int, int8, int16, int32, int64
- uint, uint8, uint16, uint32, uint64
- float32, float64
- complex64, complex128
नियंत्रण संरचनाएं
अगर स्टेटमेंट
if x > 0 {
// कोड
} else if x < 0 {
// कोड
} else {
// कोड
}
फॉर लूप
for i := 0; i < 10; i++ {
// कोड
}
रेंज लूप
for index, value := range collection {
// कोड
}
स्विच स्टेटमेंट
switch variable {
case value1:
// कोड
case value2:
// कोड
default:
// कोड
}
फंक्शन
फंक्शन घोषणा
func functionName(param1 type1, param2 type2) returnType {
// कोड
return value
}
अनेक रिटर्न वैल्यू
func divideAndRemainder(x, y int) (int, int) {
return x / y, x % y
}
डेटा संरचनाएं
एरे
var numbers int
numbers := int{1, 2, 3, 4, 5}
स्लाइस
slice := []int{1, 2, 3}
slice := make([]int, 3, 5)
मैप
m := make(map[string]int)
m["key"] = value
स्ट्रक्चर
type Person struct {
Name string
Age int
}
p := Person{Name: "Alice", Age: 30}
विधियां
विधि घोषणा
func (r Rectangle) Area() float64 {
return r.width * r.height
}
इंटरफेस
इंटरफेस घोषणा
type Shape interface {
Area() float64
}
समांतरता
गोरूटीन्स
go functionName()
चैनल्स
ch := make(chan int)
ch <- value // भेजना
value := <-ch // प्राप्त करना
त्रुटि प्रबंधन
त्रुटि जांच
if err != nil {
// त्रुटि संभालना
}
डिफर
defer file.Close()
परीक्षण
परीक्षण फंक्शन
func TestFunction(t *testing.T) {
// परीक्षण कोड
}
यह चीतशीट गो भाषा के सबसे आवश्यक संरचनाओं और कमांड्स को कवर करती है। इसमें बुनियादी सिंटैक्स, नियंत्रण संरचनाएं, फंक्शन, डेटा संरचनाएं, विधियां, इंटरफेस, समांतरता प्राइमिटिव्स, और त्रुटि प्रबंधन शामिल हैं। याद रखें कि गो सरलता और पठनीयता पर जोर देता है, इसलिए ये संरचनाएं कुशल और स्पष्ट गो कोड लिखने के लिए आधार बनाती हैं।
गो में त्रुटि प्रबंधन
गो में त्रुटि प्रबंधन सीधा और स्पष्ट है, जो स्पष्टता और मजबूती पर जोर देता है। गो में त्रुटियों को संभालने के लिए मुख्य तकनीकों का विवरण नीचे दिया गया है:
- त्रुटियों को मानों के रूप में वापस करना: उन फंक्शनों को त्रुटि वापस करने चाहिए जो विफल हो सकते हैं। उदाहरण के लिए:
func Hello(name string) (string, error) {
if name == "" {
return "", errors.New("खाली नाम")
}
message := fmt.Sprintf("नमस्ते, %v. आपका स्वागत है!", name)
return message, nil
}
- हमेशा त्रुटियों की जांच करें: एक फंक्शन को कॉल करने के बाद जो त्रुटि वापस करता है, तुरंत जांचें कि त्रुटि नॉन-निल है या नहीं। उदाहरण के लिए:
result, err := SomeFunction()
if err != nil {
// त्रुटि संभालना
log.Fatal(err)
}
- त्रुटि व्रैपिंग का उपयोग करें: जब त्रुटियों को कॉल स्टैक के ऊपर प्रोपेगेट किया जाता है, तो
fmt.Errorf()
का उपयोग%w
वर्ब के साथ व्रैपिंग के लिए करें। उदाहरण के लिए:
f, err := os.Open(path)
if err != nil {
return nil, fmt.Errorf("खोलना विफल: %w", err)
}
-
defer
का उपयोग साफ-सफाई के लिए करें:defer
का उपयोग करें ताकि यह सुनिश्चित हो कि संसाधन सही ढंग से बंद या साफ किए जाएं, भले ही कोई त्रुटि हो। -
कस्टम त्रुटि प्रकार बनाएं:
error
इंटरफेस को लागू करें ताकि अधिक विस्तृत त्रुटि जानकारी प्रदान की जा सके। -
errors
पैकेज का उपयोग करें:errors.New()
जैसे फंक्शनों का उपयोग करें ताकि सरल त्रुटि संदेश बनाए जा सकें, औरerrors.Is()
याerrors.As()
का उपयोग त्रुटि प्रकार की जांच और रूपांतरण के लिए करें। -
panic
का उपयोग न करें:panic
का उपयोग केवल वास्तव में अपरिवर्तनीय स्थितियों के लिए रखें। सामान्य त्रुटि प्रबंधन के लिए रिटर्न वैल्यू का उपयोग करें। -
स्पष्ट त्रुटि जानकारी प्रदान करें: त्रुटि संदेश स्पष्ट और सूचनाप्रद बनाएं ताकि डिबगिंग और ट्रबलशूटिंग में मदद मिल सके।
इन प्रैक्टिसेज का पालन करके, आप मजबूत गो प्रोग्राम बना सकते हैं जो त्रुटियों को प्रभावी ढंग से संभालते हैं और कोड की स्पष्टता बनाए रखते हैं।
गो में गोरूटीन्स और चैनल्स के लिए सर्वोत्तम प्रैक्टिसेज
गोरूटीन्स का कुशल उपयोग
-
अधिक गोरूटीन्स बनाने से बचें: गोरूटीन्स को सावधानीपूर्वक बनाएं, कार्य के स्वभाव और इसके समांतर कार्यान्वयन से लाभ पर विचार करते हुए।
-
उचित समन्वय: चैनल्स या वेट ग्रुप्स जैसे समन्वय तंत्रों का उपयोग करें ताकि गोरूटीन्स को प्रभावी ढंग से प्रबंधित किया जा सके और संसाधन अपव्यय से बचा जा सके।
-
कार्य का मूल्यांकन करें: किसी कार्य को गोरूटीन्स का उपयोग करने से पहले यह मूल्यांकन करें कि क्या यह वास्तव में समांतर कार्यान्वयन से लाभान्वित होता है।
चैनल्स का प्रभावी उपयोग
-
उचित चैनल प्रकार का चयन करें: समन्वय के लिए अनबफर्ड चैनल्स का उपयोग करें और जब आपको भेजने और प्राप्त करने के ऑपरेशन्स को डिकपल करना हो तो बफर्ड चैनल्स का उपयोग करें।
-
बफर क्षमता: जब बफर्ड चैनल्स का उपयोग किया जाता है तो बफर साइज को सावधानीपूर्वक विचार करें ताकि प्रदर्शन और संसाधन उपयोग के बीच संतुलन बनाए रखा जा सके।
-
चैनल्स को उचित रूप से बंद करें: यह सुनिश्चित करें कि चैनल्स को तब बंद किया जाए जब कोई और डेटा भेजा नहीं जाएगा ताकि डेडलॉक और संसाधन लीक से बचा जा सके।
समांतरता पैटर्न
-
वर्कर पूल पैटर्न: गोरूटीन्स और चैनल्स का उपयोग करके कुशल कार्य वितरण और परिणाम संग्रह के लिए वर्कर पूल लागू करें।
-
प्रोड्यूसर-कन्स्यूमर पैटर्न: गोरूटीन्स को प्रोड्यूसर और कन्स्यूमर के रूप में उपयोग करें, चैनल्स डेटा फ्लो को सुविधाजनक बनाते हैं।
त्रुटि प्रबंधन और संसाधन प्रबंधन
-
defer
का उपयोग साफ-सफाई के लिए करें:defer
स्टेटमेंट का उपयोग करें ताकि यह सुनिश्चित हो कि संसाधन सही ढंग से साफ किए जाएं, भले ही कोई त्रुटि हो। -
पैनिक्स का प्रबंधन करें: लंबे समय तक चलने वाले गोरूटीन्स में
recover()
लागू करें ताकि एक गोरूटीन में पैनिक के कारण पूरे प्रोग्राम के क्रैश होने से बचा जा सके।
संचार और समन्वय
-
साझा मेमोरी के बजाय चैनल्स का उपयोग करें: गोरूटीन्स के बीच संचार के लिए चैनल्स का उपयोग करें ताकि रेस कंडीशन्स से बचा जा सके और समन्वय सरल हो सके।
-
अनेक चैनल्स के लिए
select
का उपयोग करें:select
स्टेटमेंट का उपयोग करें ताकि अनेक चैनल ऑपरेशन्स को समांतर रूप से संभाला जा सके।
प्रदर्शन विचार
-
समांतर ऑपरेशन्स को सीमित करें: सेमाफोर्स या वर्कर पूल का उपयोग करें ताकि समांतर ऑपरेशन्स की संख्या को सीमित किया जा सके और संसाधन खपत से बचा जा सके।
-
प्रारंभिक अनुकूलन से बचें: अपने कोड को प्रोफाइल करें ताकि बोटलनेक्स पहचाने जा सकें पहले कि आप समांतरता अनुकूलन लागू करें।
परीक्षण और डिबगिंग
-
रेस डिटेक्टर का उपयोग करें: नियमित रूप से अपने परीक्षणों को
-race
फ्लैग के साथ चलाएं ताकि डेटा रेस पहचाने जा सकें। -
समांतर परीक्षण लिखें: उन परीक्षणों को बनाएं जो विशेष रूप से अपने समांतर कोड पथों को अभ्यास करें ताकि विश्वसनीयता सुनिश्चित हो।
इन सर्वोत्तम प्रैक्टिसेज का पालन करके, आप गो के समांतरता मॉडल का प्रभावी ढंग से लाभ उठा सकते हैं, जिससे आपके प्रोग्राम अधिक कुशल, बनाए रखने योग्य और सामान्य समांतरता से संबंधित समस्याओं से कम प्रभावित होंगे।
अन्य तकनीकी ब्लॉग लेख देखें।
लिनक्स पर गोलैंग अपग्रेड करना
- नए संस्करण के लिए जाएं और डाउनलोड करें: https://go.dev/doc/install
- पुराने संस्करण को हटाएं:
sudo rm -rf /usr/local/go
- नया संस्करण स्थापित करें:
cd Downloads
sudo tar -C /usr/local -xzf go1.24.3.linux-amd64.tar.gz
उपयोगी लिंक्स
- https://go.dev/
- GO में PDF बनाना - लाइब्रेरी और उदाहरण
- AWS लैम्ब्डा प्रदर्शन: JavaScript बनाम Python बनाम Golang
- गोलैंग GORM AutoMigrate postgresql त्रुटि सुधारना
- लिनक्स पुनः स्थापित करना
- बैश चीतशीट
- विस्तृत मार्कडाउन चीतशीट
- JWT टोकन डिकोड और प्रिंट करना
- प्रोग्रामिंग भाषाओं और फ्रेमवर्क की लोकप्रियता
- गोलैंग स्पेस
- गो के लिए ब्यूटीफुल सूप विकल्प