Composite ডেটা টাইপস: Arrays, Slices, Maps, Structs
Go প্রোগ্রামিং ভাষায় Composite ডেটা টাইপস হল সেই ধরনের ডেটা টাইপস যা এক বা একাধিক ভ্যালু ধারণ করতে সক্ষম। এই ডেটা টাইপগুলি ব্যবহারকারীকে একাধিক ডেটা একসাথে স্টোর এবং পরিচালনা করার সুযোগ দেয়। Go-তে চারটি প্রধান Composite ডেটা টাইপ হল: Arrays, Slices, Maps, এবং Structs। চলুন, একে একে এসব সম্পর্কে জানি।
১. Arrays (অ্যারে)
Arrays হল একটি ফিক্সড সাইজের ডেটা টাইপ, যা একই ধরনের একাধিক উপাদান ধারণ করতে পারে। একবার অ্যারে তৈরি হলে, তার আকার (size) পরিবর্তন করা যায় না।
উদাহরণ:
var arr [5]int // একটি ইনটিজার অ্যারে যা ৫টি উপাদান ধারণ করতে পারে
arr[0] = 10 // প্রথম উপাদানে ১০ অ্যাসাইন করা হচ্ছে
arr[1] = 20 // দ্বিতীয় উপাদানে ২০ অ্যাসাইন করা হচ্ছে
fmt.Println(arr) // আউটপুট: [10 20 0 0 0]বৈশিষ্ট্য:
- ফিক্সড আকার: অ্যারে তৈরি করার সময় আকার নির্ধারণ করতে হয়।
- একই ধরনের ডেটা: সমস্ত উপাদান এক ধরনের হতে হবে (যেমন: সব ইনটিজার, সব স্ট্রিং ইত্যাদি)।
অ্যারে ব্যবহার করা হয় যখন:
- আপনি জানেন যে ডেটার সংখ্যা পূর্বনির্ধারিত এবং স্থির থাকবে।
২. Slices (স্লাইস)
Slices হল একটি ডাইনামিক ডেটা টাইপ, যা অ্যারের মতো একই ধরনের ডেটা ধারণ করতে পারে তবে এর আকার পরিবর্তনযোগ্য। স্লাইস মূলত অ্যারের একটি ভিউ (view), এবং এটি অ্যারের উপাদানগুলির একটি সাবসেট হতে পারে।
উদাহরণ:
arr := []int{10, 20, 30, 40, 50} // স্লাইস তৈরি
fmt.Println(arr) // আউটপুট: [10 20 30 40 50]
arr = append(arr, 60) // নতুন উপাদান অ্যাড করা
fmt.Println(arr) // আউটপুট: [10 20 30 40 50 60]বৈশিষ্ট্য:
- ডাইনামিক আকার: স্লাইসের আকার runtime এ পরিবর্তন করা যায় (যেমন
append()ব্যবহার করে নতুন উপাদান যুক্ত করা)। - অ্যারের উপর ভিত্তি করে: স্লাইস একটি অ্যারের সাবসেট হতে পারে।
- ক্যাপাসিটি: স্লাইসের ধারণক্ষমতা (capacity) এবং দৈর্ঘ্য (length) রয়েছে, যা runtime এ পরিবর্তন হয়।
স্লাইস ব্যবহার করা হয় যখন:
- ডেটার আকার পরিবর্তনশীল এবং আপনি ডেটা বাড়ানো বা কমানোর প্রয়োজন।
৩. Maps (ম্যাপস)
Maps হল একটি ডেটা টাইপ যা কিজ (key) এবং ভ্যালু (value) জোড়া ধারণ করে। এটি একটি ডিকশনারির মতো কাজ করে যেখানে প্রতিটি কিজের সাথে একটি নির্দিষ্ট ভ্যালু যুক্ত থাকে। Go-তে ম্যাপগুলি unordered থাকে, অর্থাৎ কিজ এবং ভ্যালুর স্থান কোনো নির্দিষ্ট নিয়মে সাজানো থাকে না।
উদাহরণ:
studentGrades := make(map[string]int) // একটি ম্যাপ তৈরি করা (কিজ স্ট্রিং, ভ্যালু ইনটিজার)
studentGrades["Alice"] = 90 // Alice এর জন্য গ্রেড অ্যাসাইন করা
studentGrades["Bob"] = 80 // Bob এর জন্য গ্রেড অ্যাসাইন করা
fmt.Println(studentGrades) // আউটপুট: map[Alice:90 Bob:80]বৈশিষ্ট্য:
- ডাইনামিক: ম্যাপের সাইজ runtime এ পরিবর্তিত হয়।
- অর্ডার নেই: ম্যাপের উপাদান কোন নির্দিষ্ট ক্রমে সাজানো থাকে না।
- কিজ এবং ভ্যালু: প্রতিটি ম্যাপের উপাদান কিজ এবং ভ্যালুর জোড়া হয়।
ম্যাপ ব্যবহার করা হয় যখন:
- ডেটার জন্য দ্রুত অ্যাক্সেস প্রয়োজন, এবং প্রতিটি ডেটা কিজ দ্বারা চিহ্নিত।
৪. Structs (স্ট্রাক্টস)
Structs হল একটি কাস্টম ডেটা টাইপ যা এক বা একাধিক ডেটা টাইপের ফিল্ড ধারণ করতে পারে। এটি একই বা বিভিন্ন ধরনের ডেটা একত্রে গ্রুপ করে একটি নতুন ডেটা টাইপ তৈরি করতে সাহায্য করে। স্ট্রাক্ট একটি অবজেক্ট বা রেকর্ডের মতো কাজ করে।
উদাহরণ:
type Person struct {
Name string
Age int
Address string
}
p := Person{"John Doe", 30, "123 Main St"}
fmt.Println(p.Name) // আউটপুট: John Doe
fmt.Println(p.Age) // আউটপুট: 30
fmt.Println(p.Address) // আউটপুট: 123 Main Stবৈশিষ্ট্য:
- একাধিক ডেটা টাইপের সমন্বয়: স্ট্রাক্ট বিভিন্ন ধরনের ডেটা ধারণ করতে পারে, যেমন স্ট্রিং, ইনটিজার, ফ্লোট ইত্যাদি।
- কাস্টম ডেটা টাইপ: এটি আপনার নিজের ডেটা টাইপ তৈরি করতে সহায়ক।
স্ট্রাক্ট ব্যবহার করা হয় যখন:
- একত্রে সম্পর্কিত বিভিন্ন ডেটাকে এক জায়গায় গ্রুপ করতে হয়, যেমন একজন ব্যক্তি (নাম, বয়স, ঠিকানা)।
সারসংক্ষেপ
| ডেটা টাইপ | বৈশিষ্ট্য | ব্যবহার |
|---|---|---|
| Arrays | ফিক্সড সাইজের, একই ধরনের ডেটা ধারণ করতে পারে। | পূর্বনির্ধারিত আকারের ডেটা ধারণ করতে। |
| Slices | ডাইনামিক সাইজ, অ্যারের সাবসেট হিসেবে কাজ করে। | ডেটার আকার পরিবর্তনশীল হলে। |
| Maps | কিজ-ভ্যালু পেয়ার ধারণ করে, unordered। | দ্রুত ডেটা অ্যাক্সেস প্রয়োজন হলে। |
| Structs | একাধিক ধরনের ডেটাকে গ্রুপ করে, কাস্টম ডেটা টাইপ তৈরি করে। | সম্পর্কিত ডেটা একত্রে স্টোর করতে (যেমন ব্যক্তি, বই ইত্যাদি)। |
এই Composite ডেটা টাইপগুলো ব্যবহার করে আপনি আপনার প্রোগ্রামে জটিল ডেটা মডেল তৈরি করতে পারেন এবং সেগুলোর উপর বিভিন্ন অপারেশন সম্পাদন করতে পারবেন।
Read more