Corporate Training
Request Demo
Click me
Menu
Let's Talk
Request Demo

Tutorials

Maps and Hashing

13. Maps and Hashing

Maps are a powerful data structure in Go that allow you to create dynamic collections of key-value pairs. Maps are often used for fast lookups and indexing data. Let's explore maps, along with the concept of hashing, in detail with examples.

Maps in Go:

A map is an unordered collection of key-value pairs, where each key is unique within the map. Maps are implemented using hash tables, which provide efficient access to values based on their keys.

Declaring and Creating a Map:

To declare a map, use the 'map' keyword, followed by the key and value types.

var ages map[string]int       // Declare a map with string keys and int values

 

You can also create a map using a map literal.

colors := map[string]string{
"red": "#FF0000",
"green": "#00FF00",
"blue": "#0000FF",
}

 

Accessing and Modifying Map Elements:

You can access and modify map elements using their keys.

colors["red"] = "#FF3333"       // Modify the value of the "red" key
value := colors["green"]       // Access the value of the "green" key

 

Checking for Existence:

You can use the existence check to determine if a key exists in the map.

color, exists := colors["yellow"]
if exists {
fmt.Println("Value:", color)
} else {
fmt.Println("Key does not exist.")
}

 

Deleting Map Elements:

Use the 'delete' function to remove a key-value pair from a map.

delete(colors, "blue")             // Delete the "blue" key and its value

 

Iterating Over Maps:

Use a 'for'loop to iterate over the keys and values of a map.

for key, value := range colors {
fmt.Printf("Key: %s, Value: %s\n", key, value)
}

 

Hashing:

Hashing is a fundamental concept used in maps to efficiently organize and access key-value pairs. A hash function takes a key and produces a hash code, which is used to index and locate the value associated with that key.

Hash Collisions:

Hash collisions occur when two different keys produce the same hash code. Go's map implementation uses open addressing and separate chaining to handle collisions.

Summary:

  • Maps are unordered collections of key-value pairs.
  • Hashing is used to efficiently locate values based on keys.
  • Maps are declared using the 'map' keyword.
  • Use the 'delete' function to remove elements from a map.
  • Iterate over maps using 'for range'.

Understanding maps and hashing is essential for building efficient and scalable programs in Go. Maps provide a versatile way to store and retrieve data based on unique keys, while hashing ensures quick access to values without relying on linear searches.