1. ইটারেটর প্যাটার্ন কি
ইটারেটর প্যাটার্ন হলো একটি ব্যাবহারকারীর জন্য একটি আবষ্কণ উপায় সরবরাহ করা যায় যা সংগ্রহ বস্তুর অভ্যন্তরীণ প্রতিনিধিকরণ প্রকাশ ছাড়াই সংগ্রহের তৃতীয় মজবুতা ছাড়াই সংগ্রহের উপাদানের অটোমেশনটি চালাতে ব্যবস্থা করে।
2. ইটারেটর প্যাটার্নের বৈশিষ্ট্য এবং সুবিধা
ইটারেটর প্যাটার্নের বৈশিষ্ট্য এবং সুবিধাগুলি নিম্নলিখিত:
- এটি সংগ্রহ বস্তুর আন্তরিক কাঠামো লুকিয়ে রাখতে পারে, পার্থক্য পরিষ্কার করে সংগ্রহের উপাদান থেকে আবষ্কণ অ্যালগোরিদম।
- এটি বিভিন্ন প্রকারের সংগ্রহের উপাদান চক্রনয়ন একটি মানদণ্ডীকৃত উপায় সরবরাহ করে।
- এটি সহযোগী কোডকে সহজ করে, এটি স্পষ্ট এবং সংক্ষেপে করে।
- এটি বিভিন্ন চক্রনয়নের প্রয়োজনীয় উইল বিরিয়ান্ট সরবরাহ করতে পারে।
3. ইটারেটর প্যাটার্নের প্রায়োগিক অ্যাপ্লিকেশনের উদাহরণ
ইটারেটর প্যাটার্নের অনেক প্রায়োগিক অ্যাপ্লিকেশন রয়েছে, যেমন:
- একটি ডাটাবেস জ্ঞাপন ফলাফল সঞ্চালন করা।
- ফাইল সিস্টেমে ফাইল এবং ফোল্ডার চক্রনয়ন করা।
- সংগ্রহে উপাদান চক্রনয
4.4 বাস্তবায়নের ধাপ ক্ষুদ্রাকারে ইটারেটর ব্যবহার করে ইমপ্লিমেন্টেশন সহজ করা: জেনারেটর ফাংশন ব্যবহার
Goতে, আমরা জেনারেটর ফাংশন (yield
) ব্যবহার করে ইটারেটরের ইমপ্লিমেন্টেশন সহজ করতে পারি। এখানে একটি জেনারেটর ফাংশন ব্যবহারের একটি উদাহরণ দেয়া হলঃ
func GenerateItems() <-chan interface{} {
items := []interface{}{"Golang", "Python", "Java"}
out := make(chan interface{})
go func() {
defer close(out)
for _, item := range items {
out <- item
}
}()
return out
}
func main() {
for item := range GenerateItems() {
fmt.Println(item)
}
}
উপরের কোডে, আমরা GenerateItems()
ফাংশন নির্ধারণ করি যা একটি কেবল পড়া যাবে (<-chan
) চ্যানেল ফেরত দেয়, এবং এই ফাংশনের মধ্যে এই চ্যানেলে উপাদানগুলি সিকুয়েন্সিয়ালি পাঠাতে yield
ব্যবহার করে। main()
ফাংশনে, আমরা এই পড়া যাবে চ্যানেলটি ঘুরিয়ে বেড়ে এবং উপাদানের মান আউটপুট করতে range
ব্যবহার করি।
এই ভাবে, আমরা জেনারেটর ফাংশন ব্যবহার করে ইটারেটরের ইমপ্লিমেন্টেশন সহজ করেছি।