Skip to main content

Working with Maps in Golang

In our previous tutorial, we have explained how to handle Marshalling and Unmarshalling in Golang. In this tutorial, we will explain about Maps in Golang. Map in Golang is a data structure that provides an unordered collection of keys/values pairs. Golang maps are same like associative arrays, hash or dictionaries in other programming languages.

The maps are used to store and access values based on key. A key works like an index, pointing to the value associate with that key. A map data structure is used for fast lookup, retrieval and deletion of the data based on keys.

A map is implemented using hash table that provides faster lookup on the data element using keys. Maps are unordered and there are no fixed order in which the key/value pairs will be returned.

Also, read:

We will cover following in this tutorial to work with Maps in Golang.

1. Create Map in Golang

In Golang, maps are created using make() and map() function with curly brackets and have keys and values. It creates an instance of map data type with keys and values.

var employee = make(map[string]int)

Here in below example, variable employee is a map of string keys and int values. We have assigned employee salary and age keys with values.

package main

import "fmt"

func main() {
    
	var employee = map[string]int{"salary": 1000, "age": 20}
    
	fmt.Println(employee)
}

Now, when we run above program, we should see the following output:

map[age:20 salary:1000]

2. Adding Item to Map in Golang

Items can be added to map using a new index key and assigning value to key.

Here in below example, we are adding phone and pin to employee map object.

package main

import "fmt"

func main() {

    var employee = make(map[string]int)
	
    employee["phone"] = 123456789
	
    employee["pin"] = 12345
	
    fmt.Println(employee)
}

Now, when we run above program, we should see the following output:

map[phone:123456789 pin:12345]

3. Retrieve Item from Map in Golang

We can easily get the items from map by using it’s key. We need to pass key name inside map brackets to get the items.

Here in below example code, we will get the value of key Smith and Rose.

package main
 
import "fmt"
 
func main() {

	var employee = map[string]int{"Smith": 30, "Rose": 25}
 
	fmt.Println(employee["Smith"])
	fmt.Println(employee["Rose"])
	
}

Now, when we run above program, we should see the following output:

30
25

4. Update Item to Map in Golang

We can update the value of a key by referring to its key in map brackets.

Here in below example code, we are updating value of key Smith from 30 to 40.

package main
 
import "fmt"
 
func main() {

	var employee = map[string]int{"Smith": 30}
	employee["Smith"] = 40
	fmt.Println(employee["Smith"])	
	
}

Now, when we run above program, we should see the output 40 instead of 30:

40

5. Delete Item from Map in Golang

There are a function delete() to delete an item from map. We need to pass map with key to delete.

In below example code, we are deleting item Rose from employee map.

package main
 
import "fmt"
 
func main() {

	var employee = map[string]int{"Smith": 30, "Rose": 25}
	delete(employee, "Rose")
	fmt.Println(employee)	
	
}

Now, when we run above program, we should see the following output after deleting an item:

map[Smith:30]

6. Merge Maps in Golang

We can merge the maps to an exsting maps by passing keys and values of a maps.

Here in below example, we will loop through Student maps and passed keys and value to employee to merge it.

package main
 
import "fmt"
 
func main() {
	var employee = map[string]int{"Smith": 30, "Rose": 25}
	var Student = map[string]int{"Goerge": 50, "William": 35}
 
	for k, v := range Student {
		employee[k] = v
	}
 
	fmt.Println(employee)
}

Now, when we run above program, we should see the following output after merging maps:

map[Goerge:50 Rose:25 Smith:30 William:35]

7. Truncate Map in Golang

We can easily empty the map or delete all items by redefining the map.

package main

import "fmt"

func main() {

	var employee = map[string]int{"Smith": 30, "Rose": 25}
	
	var employee = make(map[string]int)
	
	fmt.Println(employee)	
}

Now, when we run above program, we should see the following output after truncating map:

map[]

You may also like: