# ম্যাপস

ম্যাপ হচ্ছে গো-এর এ্যাসোসিয়েটিভ ডাটা টাইপ। ম্যাপ এ আমরা একটি কি এর বিপরীতে একটি ভ্যালু স্টোর করি।

`make` ফাংশনটি ব্যবহার করে আমরা এভাবে একটি ম্যাপ তৈরি করতে পারি:

```go
m := make(map[string]int)
```

ম্যাপ এর ক্ষেত্রে `make` ফাংশনটির ফরম্যাটটি হলো - `map[ <কি-এর টাইপ> ] <ভ্যালু টাইপ>`

কি-ভ্যালু সেট করা খুবই সহজ:

```go
m["k1"] = 7
m["k2"] = 13
fmt.Println("map:", m)
```

আউটপুট:

```
map: map[k1:7 k2:13]
```

ভ্যালু রিট্রিভ করাও খুব জটিল নয়:

```go
v1, pres := m["k1"]
fmt.Println("v1: ", v1)
fmt.Println("pres: ", pres)
```

ভ্যালু রিট্রিভ করার সময় প্রথম রিটার্ন ভ্যালুটি হয় ঐ কি-এর ভ্যালু। দ্বিতীয় রিটার্ন ভ্যালুটি হয় বুলিয়ান। এটি নির্দেশ করে ঐ কি-টি ম্যাপে ছিলো কিনা। এটির মাধ্যমে জিরো ভ্যালুর ক্ষেত্রে সহজে বোঝা যায় ঐ কি-এর ভ্যালু কি সত্যিই জিরো ভ্যালু নাকি ঐ নামে কোন কি-ই ছিলো না ম্যাপে। উপরের কোডটির আউটপুট হবে:

```
v1:  7
pres:  true
```

ম্যাপ এর লেংথ জানতে আছে আমাদের পরিচিত `len` ফাংশনটি।

```go
fmt.Println("len:", len(m))
```

আউটপুট:

```
len: 2
```

কোন আইটেম ডিলিট করতে রয়েছে `delete` ফাংশনটি:

```go
delete(m, "k2")
fmt.Println("map:", m)
```

ডিলিট করার সময় ফাংশনে প্যারামিটার হিসেবে ম্যাপের নাম আর কোন আইটেম ডিলিট করতে হবে তার কি-টি দিতে হবে। এই কোডটির আউটপুট:

```
map: map[k1:7]
```
