# Maps

Map is an unordered collection of key-value pairs.

Zero value of a map is `nil`.

Other languages call it a dictionary (C#, Python) or a hash table (C++).

Iteration over a map has a random order. Many languages are different in that respect.

Basics of maps:

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

// set the value
m["three"] = 3
m["four"] = 4

// get the value and see if the value exists
key := "four"
if value, ok := m[key]; ok {
fmt.Printf("Key '%s' exists and maps to %d\n", key, value)
} else {
fmt.Printf("Key '%s' doesn't exists\n", key)
}

key = "five"
if value, ok := m[key]; ok {
fmt.Printf("Key '%s' exists and maps to %d\n", key, value)
} else {
fmt.Printf("Key '%s' doesn't exists\n", key)
}

// if value doesn't exist, the result of lookup is zero value. In this case zero value of int is 0
fmt.Printf("\nValue for non-existing key: %d\n\n", m["not-exists"])

// iterating over keys and values
fmt.Printf("All keys and their values:\n")
for key, value := range m {
fmt.Printf("%s => %d\n", key, value)
}

fmt.Printf("\nBefore deletion: len(m)=%d\n", len(m))
delete(m, "four")
fmt.Printf("After deletion : len(m)=%d\n", len(m))```
```Key 'four' exists and maps to 4
Key 'five' doesn't exists

Value for non-existing key: 0

All keys and their values:
three => 3
four => 4

Before deletion: len(m)=2
After deletion : len(m)=1
```

↑ ↓ to navigate     ↵ to select     Esc to close