Maps in Go

Introduction to Maps

Maps in Go are built-in data structures that store key-value pairs. They provide efficient lookups, inserts, and deletions, making them essential for managing associative data.

Declaring and Initializing a Map

A map can be created using the make function or initialized with values directly.

package main

import "fmt"

func main() {
    ages := make(map[string]int) // Creating an empty map
    ages["Alice"] = 25
    ages["Bob"] = 30
    fmt.Println(ages)
}

Here, we create a map where names are keys and ages are values.

Initializing a Map with Values

We can directly initialize a map with key-value pairs.

package main

import "fmt"

func main() {
    ages := map[string]int{"Alice": 25, "Bob": 30, "Charlie": 35}
    fmt.Println(ages)
}

This example demonstrates how to define a map with initial values.

Accessing and Modifying Map Values

Values can be accessed or updated using keys.

package main

import "fmt"

func main() {
    ages := map[string]int{"Alice": 25, "Bob": 30}
    fmt.Println("Bob's age:", ages["Bob"])
    ages["Bob"] = 32  // Updating Bob's age
    fmt.Println("Updated age:", ages["Bob"])
}

Here, Bob’s age is updated from 30 to 32.

Checking for Key Existence

To check if a key exists in a map, use the second return value of a key lookup.

package main

import "fmt"

func main() {
    ages := map[string]int{"Alice": 25, "Bob": 30}
    age, exists := ages["Charlie"]
    if exists {
        fmt.Println("Charlie's age:", age)
    } else {
        fmt.Println("Charlie not found")
    }
}

Here, we check if "Charlie" exists before printing the value.

Deleting a Key

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

package main

import "fmt"

func main() {
    ages := map[string]int{"Alice": 25, "Bob": 30}
    delete(ages, "Alice")
    fmt.Println(ages)
}

Here, "Alice" is removed from the map.

Iterating Over a Map

Use a for loop with range to iterate over a map.

package main

import "fmt"

func main() {
    ages := map[string]int{"Alice": 25, "Bob": 30, "Charlie": 35}
    for name, age := range ages {
        fmt.Println(name, "is", age, "years old")
    }
}

This example prints all key-value pairs in the map.

Conclusion

Maps in Go provide an efficient way to store and retrieve key-value pairs. They support dynamic updates, key existence checks, deletions, and iteration.

In the next lesson, we will explore Structs in Go, which allow defining custom data types.