मे

मेथड में Go

3 अभ्यास

मेथड के बारे में

मेथड एक फंक्शन होता है जिसमें एक खास तरह का रिसीवर आर्गुमेंट होता है। रिसीवर func कीवर्ड और मेथड के नाम के बीच, आर्गुमेंट सूची में आता है।

func (receiver type) MethodName(parameters) (returnTypes) {

}

आप ऐसा मेथड ही बना सकते हैं जिसके रिसीवर का टाइप उसी पैकेज में परिभाषित हो जिसमें वह मेथड है।

type Person struct {
	Name string
}

func (p Person) Greetings() string {
	return fmt.Sprintf("Welcome %s!", p.Name)
}

s := Person{Name: "Bronson"}
fmt.Println(s.Greetings())
// Output: Welcome Bronson!

रिसीवर दो तरह के होते हैं: वैल्यू रिसीवर और पॉइंटर रिसीवर।

वैल्यू रिसीवर वाला मेथड उस वैल्यू की एक कॉपी पर काम करता है जो उसे दी जाती है। इसका मतलब है कि मेथड के अंदर रिसीवर में किया गया कोई भी बदलाव मेथड को कॉल करने वाले को दिखाई नहीं देता।

उस वैल्यू को बदलने के लिए, जिस ओर रिसीवर इशारा करता है, आप पॉइंटर रिसीवर वाले मेथड घोषित कर सकते हैं। ऐसे बदलाव मेथड को कॉल करने वाले को भी दिखाई देते हैं।

type rect struct {
	width, height int
}

func (r *rect) squareIt() {
	r.height = r.width
}

r := rect{width: 10, height: 20}
fmt.Printf("Width: %d, Height: %d\n", r.width, r.height)
// Output: Width: 10, Height: 20

r.squareIt()
fmt.Printf("Width: %d, Height: %d\n", r.width, r.height)
// Output: Width: 10, Height: 10

आपको यहाँ कई उदाहरण मिलेंगे। मेथड के बारे में यह छोटा ट्यूटोरियल भी देख लीजिए।

याद रखिए: मेथड केवल एक फंक्शन है जिसमें रिसीवर आर्गुमेंट होता है।

GitHub के ज़रिए संपादित करें यह लिंक नई विंडो या टैब में खुलता है।

मेथड सीखिए

अभ्यास लॉक है

मेथड पर अभ्यास करने के लिए 2 और अभ्यास अनलॉक कीजिए