Go-তে Map এর ডিক্লারেশন এবং Initialization
১. Map কি?
Go তে Map হল একটি ডেটা স্ট্রাকচার যা key-value পেয়ার (অথবা চাবি-মূল্য জোড়া) সংরক্ষণ করে। এটি একটি অসংখ্য ডেটা আইটেমের দ্রুত অ্যাক্সেস প্রদান করে, যেখানে প্রতিটি আইটেম একটি ইউনিক কী দ্বারা চিহ্নিত করা হয়।
Map এর সাধারণ ব্যবহার:
- একটি নির্দিষ্ট কী (key) দিয়ে দ্রুত মান (value) অ্যাক্সেস করা।
- ডুপ্লিকেট কী এড়ানো যায়, কারণ প্রতিটি কী এক্সক্লুসিভ (একক)।
২. Map ডিক্লারেশন
Go তে একটি Map ডিক্লেয়ার করতে নিম্নলিখিত সিনট্যাক্স ব্যবহার করা হয়:
var mapName map[keyType]valueTypemapName: Map এর নামkeyType: Map এর কী এর টাইপvalueType: Map এর মানের টাইপ
২.১ Map ডিক্লারেশন উদাহরণ
package main
import "fmt"
func main() {
var m map[string]int // একটি স্ট্রিং কী এবং ইন্ট মান ধারণকারী map ডিক্লেয়ার করা
fmt.Println(m) // আউটপুট: map[] (খালি map)
}এখানে, m একটি map যা string কী এবং int মান ধারণ করবে। তবে, এটি এখন পর্যন্ত ইনিশিয়ালাইজড হয়নি, তাই এটি একটি খালি map।
৩. Map Initialization (ইনিশিয়ালাইজেশন)
Go তে Map ইনিশিয়ালাইজ করার জন্য দুটি উপায় রয়েছে:
- make() ফাংশন ব্যবহার করে
- Literal Syntax ব্যবহার করে (নির্দিষ্ট মান দিয়ে ইনিশিয়ালাইজ করা)
৩.১ make() ফাংশন দিয়ে Map ইনিশিয়ালাইজ করা
make() ফাংশন ব্যবহার করে একটি map ইনিশিয়ালাইজ করা হয়। make() ফাংশন Map এর জন্য মেমরি এলোকেট করে এবং এটিকে ব্যবহারের জন্য প্রস্তুত করে।
package main
import "fmt"
func main() {
// make() ফাংশন দিয়ে map ইনিশিয়ালাইজ করা
m := make(map[string]int)
m["apple"] = 5
m["banana"] = 10
fmt.Println(m) // আউটপুট: map[apple:5 banana:10]
}এখানে, m একটি map যা string কী এবং int মান ধারণ করে এবং make() ফাংশন দ্বারা এটি ইনিশিয়ালাইজ করা হয়েছে। পরে apple এবং banana কী দ্বারা মান অ্যাসাইন করা হয়েছে।
৩.২ Literal Syntax দিয়ে Map ইনিশিয়ালাইজ করা
Go তে আপনি ডিরেক্টলি মান দিয়ে map ইনিশিয়ালাইজ করতে পারেন:
package main
import "fmt"
func main() {
// Literal Syntax ব্যবহার করে Map ইনিশিয়ালাইজ করা
m := map[string]int{
"apple": 5,
"banana": 10,
}
fmt.Println(m) // আউটপুট: map[apple:5 banana:10]
}এখানে, m map কে সরাসরি "apple" এবং "banana" কীগুলির সাথে ইনিশিয়ালাইজ করা হয়েছে।
৩.৩ Map এর আকার (Capacity) এবং সাইজ (Length)
Go তে map এর আকার এবং সাইজ বের করতে len() ফাংশন ব্যবহার করা হয়। এটা map এ উপস্থিত key-value পেয়ার গুলোর সংখ্যা ফেরত দেয়।
package main
import "fmt"
func main() {
m := map[string]int{
"apple": 5,
"banana": 10,
"grape": 7,
}
fmt.Println("Length of map:", len(m)) // আউটপুট: 3
}এখানে, len(m) map m এর সাইজ বা key-value পেয়ার গুলোর সংখ্যা ৩ হবে।
৪. Map থেকে মান অ্যাক্সেস এবং ম্যানিপুলেশন
৪.১ Map এর মান অ্যাক্সেস করা
package main
import "fmt"
func main() {
m := map[string]int{
"apple": 5,
"banana": 10,
}
// Map থেকে একটি মান অ্যাক্সেস করা
fmt.Println("apple:", m["apple"]) // আউটপুট: apple: 5
fmt.Println("banana:", m["banana"]) // আউটপুট: banana: 10
}এখানে, আমরা m["apple"] দিয়ে apple কী থেকে মান 5 অ্যাক্সেস করছি।
৪.২ Map এ নতুন key-value পেয়ার যোগ করা
package main
import "fmt"
func main() {
m := map[string]int{
"apple": 5,
}
// নতুন key-value পেয়ার যোগ করা
m["banana"] = 10
m["grape"] = 7
fmt.Println(m) // আউটপুট: map[apple:5 banana:10 grape:7]
}এখানে, আমরা m["banana"] = 10 দিয়ে banana কীকে মান 10 দিয়ে আপডেট করেছি।
৪.৩ Map থেকে key-value পেয়ার মুছে ফেলা
Map থেকে কোনো key-value পেয়ার মুছে ফেলার জন্য delete() ফাংশন ব্যবহার করা হয়:
package main
import "fmt"
func main() {
m := map[string]int{
"apple": 5,
"banana": 10,
"grape": 7,
}
// "banana" কী মুছে ফেলা
delete(m, "banana")
fmt.Println(m) // আউটপুট: map[apple:5 grape:7]
}এখানে, delete(m, "banana") দিয়ে banana কীটি map থেকে মুছে ফেলা হয়েছে।
৫. Nil Map
Go তে একটি nil map ডিক্লেয়ার করা যায়, যেটি কোনো মান ধারণ করে না। যদি আপনি একটি nil map থেকে কোনো মান অ্যাক্সেস করতে যান, তাহলে এটি ডিফল্ট মান প্রদান করবে (যেমন: 0 ইন্ট টাইপের জন্য, "" স্ট্রিং টাইপের জন্য)।
package main
import "fmt"
func main() {
var m map[string]int // একটি nil map ডিক্লেয়ার করা
// nil map থেকে মান অ্যাক্সেস করা
fmt.Println(m) // আউটপুট: map[]
fmt.Println(m["apple"]) // আউটপুট: 0
}এখানে, m একটি nil map, এবং m["apple"] অ্যাক্সেস করলে তা ডিফল্ট মান 0 ফেরত দিবে।
সারসংক্ষেপ
- Map ডিক্লারেশন: Go তে map ডিক্লেয়ার করার জন্য
map[keyType]valueTypeসিনট্যাক্স ব্যবহার করা হয়। - Map Initialization: আপনি map ইনিশিয়ালাইজ করতে
make()ফাংশন অথবা লিটারাল সিনট্যাক্স ব্যবহার করতে পারেন। - Map Manipulation:
len(),delete()ফাংশন ব্যবহার করে map এর সাইজ এবং উপাদান ম্যানিপুলেট করা যায়। - Nil Map:
nilmap ডিক্লেয়ার করলে সেটি ডিফল্ট মানের সাথে খালি থাকে।
Go তে Map ডেটা স্ট্রাকচারটি খুবই শক্তিশালী এবং এটি দ্রুত ডেটা অ্যাক্সেস এবং পরিচালনার জন্য ব্যবহৃত হয়।
Read more