মে

মেথড মধ্যে 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টি অনুশীলনী আনলক করুন