Go-তে Maps এবং Iteration এর সাথে Range এর ব্যবহার
Go তে Maps একটি অত্যন্ত শক্তিশালী ডেটা স্ট্রাকচার, যা key-value পেয়ার ব্যবহার করে ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। Iteration এবং Range এগুলোর সাথে ব্যবহৃত একটি গুরুত্বপূর্ণ কৌশল, যা আপনাকে ম্যাপের মধ্যে থাকা ডেটার উপরে লুপ চালাতে সাহায্য করে।
১. Maps in Go (ম্যাপস)
Map হল একটি ডেটা স্ট্রাকচার যা key-value পেয়ার ধারণ করে। এতে কোনো একটি key এর মাধ্যমে তার মান (value) অ্যাক্সেস করা যায়। Go-তে map ডেটা টাইপটি ডিক্লেয়ার করতে {} ব্র্যাকেট ব্যবহার করা হয়।
১.১ Map ডিফাইনেশন এবং ইনিশিয়ালাইজেশন
package main
import "fmt"
func main() {
// Map ডিফাইন করা
var m map[string]int
// Map ইনিশিয়ালাইজ করা
m = make(map[string]int)
// Map-এ key-value পেয়ার অ্যাসাইন করা
m["Alice"] = 25
m["Bob"] = 30
// Map প্রিন্ট করা
fmt.Println(m)
}এখানে, m একটি map[string]int টাইপের ম্যাপ, যেখানে string হল key এবং int হল value। make(map[string]int) দ্বারা ম্যাপটি ইনিশিয়ালাইজ করা হয়েছে এবং তারপরে key ও value অ্যাসাইন করা হয়েছে।
আউটপুট:
map[Alice:25 Bob:30]১.২ Map ডিফাইন এবং ইনিশিয়ালাইজ করার আরো সহজ উপায়
এছাড়াও, আপনি ম্যাপটি সরাসরি এক্সপ্রেশন দিয়ে ডিফাইন এবং ইনিশিয়ালাইজ করতে পারেন।
package main
import "fmt"
func main() {
// Directly initializing a map with values
m := map[string]int{
"Alice": 25,
"Bob": 30,
}
fmt.Println(m)
}এখানে, ম্যাপটি সরাসরি map[string]int টাইপের ভ্যালু দিয়ে ইনিশিয়ালাইজ করা হয়েছে।
আউটপুট:
map[Alice:25 Bob:30]২. Map Iteration using Range (Map ইটারেশন রেঞ্জ ব্যবহার করে)
Go-তে ম্যাপের মধ্যে ইটারেট করতে range কিওয়ার্ড ব্যবহার করা হয়। range ব্যবহার করলে ম্যাপের প্রতিটি key-value পেয়ার সহজে এক্সেস করা যায়।
২.১ Map Iteration উদাহরণ
package main
import "fmt"
func main() {
m := map[string]int{
"Alice": 25,
"Bob": 30,
"Eve": 22,
}
// range দিয়ে ম্যাপের উপর ইটারেশন করা
for key, value := range m {
fmt.Println(key, value)
}
}এখানে, range m ম্যাপের প্রতিটি key-value পেয়ার একে একে ফেচ করে এবং key এবং value ভেরিয়েবলগুলিতে সেট করে। এই পদ্ধতিতে আমরা সহজে ম্যাপের প্রতিটি উপাদান প্রিন্ট করতে পারি।
আউটপুট:
Alice 25
Bob 30
Eve 22২.২ Map Iteration with Only Keys or Values
আপনি যদি শুধুমাত্র key বা value এক্সেস করতে চান, তবে আপনি range এর মধ্যে একাধিক ভেরিয়েবল ব্যবহার না করে একটিই ব্যবহার করতে পারেন।
- শুধুমাত্র key প্রিন্ট করা:
package main
import "fmt"
func main() {
m := map[string]int{
"Alice": 25,
"Bob": 30,
"Eve": 22,
}
for key := range m {
fmt.Println(key)
}
}আউটপুট:
Alice
Bob
Eve- শুধুমাত্র value প্রিন্ট করা:
package main
import "fmt"
func main() {
m := map[string]int{
"Alice": 25,
"Bob": 30,
"Eve": 22,
}
for _, value := range m {
fmt.Println(value)
}
}এখানে, _ দিয়ে key কে উপেক্ষা করা হয়েছে এবং শুধুমাত্র value আউটপুট করা হয়েছে।
আউটপুট:
25
30
22৩. Map Key Existence Checking (ম্যাপের Key অস্তিত্ব পরীক্ষা করা)
Go-তে, আপনি value, ok := map[key] সিনট্যাক্স ব্যবহার করে একটি ম্যাপে key এর অস্তিত্ব পরীক্ষা করতে পারেন। যদি key ম্যাপে থাকে, তবে ok ভেরিয়েবল true হবে এবং value সেই key-এর মান ধারণ করবে। যদি key না থাকে, তবে ok হবে false এবং value হবে ডিফল্ট মান।
৩.১ Key Existence Checking উদাহরণ
package main
import "fmt"
func main() {
m := map[string]int{
"Alice": 25,
"Bob": 30,
}
value, ok := m["Alice"]
if ok {
fmt.Println("Alice found, age:", value)
} else {
fmt.Println("Alice not found.")
}
// Key not found example
value, ok = m["Eve"]
if ok {
fmt.Println("Eve found, age:", value)
} else {
fmt.Println("Eve not found.")
}
}এখানে, m["Alice"] এবং m["Eve"] এর অস্তিত্ব পরীক্ষা করা হয়েছে।
আউটপুট:
Alice found, age: 25
Eve not found.সারসংক্ষেপ
- Maps: Go-তে Maps হল এমন একটি ডেটা স্ট্রাকচার যা
key-valueপেয়ার ধারণ করে এবং খুব দ্রুত ডেটা অ্যাক্সেস করতে সহায়ক। - Iteration with Range:
rangeকিওয়ার্ড ব্যবহার করে ম্যাপের উপর সহজভাবে ইটারেশন করা যায়, যা প্রতিটিkey-valueপেয়ারকে একে একে প্রক্রিয়া করতে সাহায্য করে। - Key Existence Checking:
value, ok := map[key]সিনট্যাক্স ব্যবহার করে আপনি সহজে চেক করতে পারেন যে একটি নির্দিষ্ট key ম্যাপে আছে কিনা।
Go-তে Maps এবং Range এর ব্যবহার খুবই শক্তিশালী এবং এটি আপনাকে একাধিক ডেটার সাথে কার্যকরভাবে কাজ করতে সহায়তা করে।
Read more