Go – Convert Slice to Map

In Go, slices are used for dynamic collections of elements, while maps are key-value pairs that offer fast lookups. Converting a slice to a map involves mapping each element of the slice to a key in the map, based on a specific logic or transformation.

In this tutorial, we will explore how to convert slices to maps in Go using practical examples and detailed explanations.


Steps to Convert Slice to Map

  • Initialize a Map: Create an empty map to store the key-value pairs.
  • Iterate Through Slice: Use a for loop to iterate through the slice.
  • Assign Keys and Values: Define the logic for mapping slice elements to keys and values in the map.

Examples of Converting Slice to Map

1. Convert Slice to Map Using Index as Key

This example demonstrates how to convert a slice to a map using the slice index as the map key:

</>
Copy
package main

import "fmt"

func main() {
    // Declare and initialize a slice
    slice := []string{"apple", "banana", "cherry"}

    // Create an empty map
    result := make(map[int]string)

    // Convert slice to map
    for i, v := range slice {
        result[i] = v
    }

    // Print the resulting map
    fmt.Println("Map:", result)
}

Explanation

  1. Declare Slice: The slice slice is initialized with values {"apple", "banana", "cherry"}.
  2. Create Map: An empty map result is created with integer keys and string values.
  3. Assign Key-Value Pairs: A for loop iterates through the slice, mapping each index to its corresponding value in the map.
  4. Print Result: The resulting map is printed using fmt.Println.

Output


2. Convert Slice to Map Using Element as Key

This example demonstrates how to convert a slice to a map using the slice element as the map key:

</>
Copy
package main

import "fmt"

func main() {
    // Declare and initialize a slice
    slice := []string{"apple", "banana", "cherry"}

    // Create an empty map
    result := make(map[string]int)

    // Convert slice to map
    for i, v := range slice {
        result[v] = i
    }

    // Print the resulting map
    fmt.Println("Map:", result)
}

Explanation

  1. Declare Slice: The slice slice is initialized with values {"apple", "banana", "cherry"}.
  2. Create Map: An empty map result is created with string keys and integer values.
  3. Assign Key-Value Pairs: A for loop iterates through the slice, mapping each element to its index in the map.
  4. Print Result: The resulting map is printed using fmt.Println.

Output


3. Convert Slice to Map Using Custom Logic

This example demonstrates how to apply custom logic when converting a slice to a map:

</>
Copy
package main

import "fmt"

func main() {
    // Declare and initialize a slice
    slice := []int{2, 4, 6, 8}

    // Create an empty map
    result := make(map[int]int)

    // Convert slice to map
    for _, v := range slice {
        result[v] = v * v
    }

    // Print the resulting map
    fmt.Println("Map:", result)
}

Explanation

  1. Declare Slice: The slice slice is initialized with values {2, 4, 6, 8}.
  2. Create Map: An empty map result is created with integer keys and integer values.
  3. Custom Logic: Each element is mapped to its square as the value in the map.
  4. Print Result: The resulting map is printed using fmt.Println.

Output


Points to Remember

  • Logic-Driven Keys and Values: Define clear logic for mapping slice elements to keys and values in the map.
  • Map Initialization: Always initialize the map using make before populating it.
  • Dynamic Mapping: You can map slice elements to any type of key-value pairs based on your requirements.
  • Memory Independence: The map is independent of the original slice after conversion.