Understanding Data Structure of Type Map.¶
Objective¶
Understanding Map's in Go.
Imagine yourself creating a team of Avengers and need to add contact details of all your Super Hero's, you essentially would require a phone number be associated with only one Super Hero, this can be easily done using 'Maps' in Go.
It is also known as 'Hash Table' in other programming languages and these offer faster lookups, adds and deletes.
Structure¶
Navigate to our code folder
1 |
|
For our program create a new folder '13_map'
1 |
|
And lets create a file 'maps.go' in it, finally the structure would look like this:
1 |
|
Declaration¶
Syntax
Declaration & initialization method
1 |
|
With built-in function make()
1 |
|
Code¶
We will write the code in 2 parts:
1.)
part-1 maps.go
1 package main
2
3 import "fmt"
4
5 func main() {
6 // Let's make contact list with names & phone numbers
7 // Initialize a map 'contactList'
8 contactList := make(map[string]int)
9 // Adding values to map
10 contactList["Iron Man"] = 878111222
11 contactList["Thor"] = 121131141
12 contactList["Batman"] = 483910138
13 contactList["Spider Man"] = 478282929
14
15 // print out the map
16 for key, value := range contactList {
17 fmt.Printf("Key = %s\tValue = %d\n", key, value)
18 }
19 fmt.Println("")
20 // Iron man decides to change his number
21 contactList["Iron Man"] = 333333333
22 fmt.Printf("The new contact no of Iron Man is: %d\n", contactList["Iron Man"])
23 fmt.Println("")
24 // Now Hulk wants to join the team
25 contactList["Hulk"] = 911831925
26
27 // New team is
28 for key, value := range contactList {
29 fmt.Printf("Key = %s\tValue = %d\n", key, value)
30 }
31
Review
On line 8 we declare a 'map' and initialize using 'make'
1 |
|
We create a map with 'key' of type 'string' and 'value' of type 'int', we want to map the name of the super hero along with their contact number.
We can add values to map as done from line 10 to 14.
1 2 3 4 |
|
Map can also be declared and initialized using the following syntax
1 2 3 4 5 6 |
|
On line 16 we print out the map. We can also change the values of the key, on line 21 we change the number of Iron Man.
1 |
|
We can also add new super hero on line 25
1 |
|
2.)
part-2 maps.go
32 /*
33 Operators in maps
34 */
35 // Length of our super hero team
36 fmt.Println("Length: ", len(contactList))
37
38 // Spider man is not performing well and we need to delete him
39 delete(contactList, "Spider Man")
40 fmt.Println("Length: ", len(contactList))
41
42 // Checking if Spider Man is deleted or not
43 _, ok := contactList["Spider Man"]
44 if !ok {
45 fmt.Println("Spider Man is deleted")
46 }
47 }
Review
On line 36 we check the length of map.
1 |
|
We can delete values from our map using 'delete' as on line 39.
1 |
|
On line 43 we check if the key is present in the map or not, it returns a boolean value, 'true' if the key is present and 'false' if not found.
1 |
|
Full Code¶
slice.go
package main
import "fmt"
func main() {
// Let's make contact list with names & phone numbers
// Initialize a map 'contactList'
contactList := make(map[string]int)
// Adding values to map
contactList["Iron Man"] = 878111222
contactList["Thor"] = 121131141
contactList["Batman"] = 483910138
contactList["Spider Man"] = 478282929
// print out the map
for key, value := range contactList {
fmt.Printf("Key = %s\tValue = %d\n", key, value)
}
fmt.Println("")
// Iron man decides to change his number
contactList["Iron Man"] = 333333333
fmt.Printf("The new contact no of Iron Man is: %d\n", contactList["Iron Man"])
fmt.Println("")
// Now Hulk wants to join the team
contactList["Hulk"] = 911831925
// New team is
for key, value := range contactList {
fmt.Printf("Key = %s\tValue = %d\n", key, value)
}
/*
Operators in maps
*/
// Length of our super hero team
fmt.Println("Length: ", len(contactList))
// Siper man is not performing well and we need to delete him
delete(contactList, "Spider Man")
fmt.Println("Length: ", len(contactList))
// Checking if Siper Man is deleted or not
_, ok := contactList["Spider Man"]
if !ok {
fmt.Println("Spider Man is deleted")
}
}
Running your code¶
Open your terminal and navigate to our folder
1 |
|
Once in the folder type the following command
1 |
|
Output¶
If there are no errors, you should get the output as:
Output
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
If for some reason your code isn't working, checkout the github repo or playground.
Github¶
Golang Playground¶
Next¶
In the next chapter we will study Struct.