How to Filter a Map Based on Values in Go - Step by Step Examples



How to Filter a Map Based on Values in Go ?

Answer

To filter a map based on values in Go, you can iterate over the map and add key-value pairs that meet the filter criteria to a new map. This method allows you to create a subset of the original map based on specific value conditions.



✐ Examples

1 Filtering a Map Based on Value Range

We can filter a map based on a range of values in Go by iterating over the map and adding key-value pairs that fall within the specified range to a new map.

For example,

  1. We start by importing the fmt package, which provides the necessary functions for input-output operations.
  2. We declare and initialize a map named myMap with some key-value pairs. In this example, the map has integer keys and integer values.
  3. We declare an empty map named filteredMap to store the filtered key-value pairs.
  4. We define the lower and upper bounds of the value range.
  5. We iterate over the original map using a for loop and check if each value falls within the specified range.
  6. We add the key-value pairs that meet the condition to the filteredMap.
  7. We print the filtered map to the console using the fmt.Println function to verify the filtering.

Go Program

package main

import "fmt"

func main() {
    // Declare and initialize a map
    myMap := map[int]int{
        1: 10,
        2: 20,
        3: 30,
        4: 40,
        5: 50,
    }

    // Declare an empty map to store the filtered key-value pairs
    filteredMap := make(map[int]int)

    // Define the value range
    lowerBound := 20
    upperBound := 40

    // Iterate over the original map and filter based on the value range
    for key, value := range myMap {
        if value >= lowerBound && value <= upperBound {
            filteredMap[key] = value
        }
    }

    // Print the filtered map
    fmt.Println("Filtered Map by Value Range:")
    for key, value := range filteredMap {
        fmt.Printf("%d: %d\n", key, value)
    }
}

Output

Filtered Map by Value Range:
2: 20
3: 30
4: 40

2 Filtering a Map Based on Specific Values

We can filter a map based on specific values in Go by iterating over the map and adding key-value pairs that match the specified values to a new map.

For example,

  1. We start by importing the fmt package, which provides the necessary functions for input-output operations.
  2. We declare and initialize a map named myMap with some key-value pairs. In this example, the map has integer keys and integer values.
  3. We declare an empty map named filteredMap to store the filtered key-value pairs.
  4. We define a set of specific values that we want to filter the map by.
  5. We iterate over the original map using a for loop and check if each value matches one of the specified values.
  6. We add the key-value pairs that meet the condition to the filteredMap.
  7. We print the filtered map to the console using the fmt.Println function to verify the filtering.

Go Program

package main

import "fmt"

func main() {
    // Declare and initialize a map
    myMap := map[int]int{
        1: 10,
        2: 20,
        3: 30,
        4: 40,
        5: 50,
    }

    // Declare an empty map to store the filtered key-value pairs
    filteredMap := make(map[int]int)

    // Define the specific values to filter by
    valuesToFilter := map[int]bool{10: true, 30: true, 50: true}

    // Iterate over the original map and filter based on the specific values
    for key, value := range myMap {
        if valuesToFilter[value] {
            filteredMap[key] = value
        }
    }

    // Print the filtered map
    fmt.Println("Filtered Map by Specific Values:")
    for key, value := range filteredMap {
        fmt.Printf("%d: %d\n", key, value)
    }
}

Output

Filtered Map by Specific Values:
1: 10
3: 30
5: 50

3 Filtering a Map with String Values Based on Prefix

We can filter a map with string values based on a specific prefix in Go by iterating over the map and adding key-value pairs that have values starting with the given prefix to a new map.

For example,

  1. We start by importing the fmt and strings packages, which provide the necessary functions for input-output operations and string manipulations.
  2. We declare and initialize a map named myMap with some key-value pairs. In this example, the map has integer keys and string values.
  3. We declare an empty map named filteredMap to store the filtered key-value pairs.
  4. We define a prefix string that we want to filter the map by.
  5. We iterate over the original map using a for loop and check if each value starts with the specified prefix.
  6. We add the key-value pairs that meet the condition to the filteredMap.
  7. We print the filtered map to the console using the fmt.Println function to verify the filtering.

Go Program

package main

import (
    "fmt"
    "strings"
)

func main() {
    // Declare and initialize a map
    myMap := map[int]string{
        1: "apple",
        2: "banana",
        3: "apricot",
        4: "carrot",
        5: "blueberry",
    }

    // Declare an empty map to store the filtered key-value pairs
    filteredMap := make(map[int]string)

    // Define the prefix to filter by
    prefix := "ap"

    // Iterate over the original map and filter based on the prefix
    for key, value := range myMap {
        if strings.HasPrefix(value, prefix) {
            filteredMap[key] = value
        }
    }

    // Print the filtered map
    fmt.Println("Filtered Map by Prefix:")
    for key, value := range filteredMap {
        fmt.Printf("%d: %s\n", key, value)
    }
}

Output

Filtered Map by Prefix:
1: apple
3: apricot

Summary

In this tutorial, we learned How to Filter a Map Based on Values in Go language with well detailed examples.




More Go Maps Tutorials

  1. How to create an Empty Map in Go ?
  2. How to create a Map with Initial Key-Value Pairs in Go ?
  3. How to Print a Map in Go ?
  4. How to Add a Key-Value Pair to a Map in Go ?
  5. How to Set a Default Value for a Key in a Map in Go ?
  6. How to Update the Value for a Key in a Map in Go ?
  7. How to Check if a Map is Empty in Go ?
  8. How to Check if a Key Exists in a Map in Go ?
  9. How to Check if a Value Exists in a Map in Go ?
  10. How to Get the Value Associated with a Key in a Map in Go ?
  11. How to Remove a Key-Value Pair from a Map in Go ?
  12. How to Remove Key-Value Pairs from a Map Based on Values in Go ?
  13. How to Clear All Key-Value Pairs from a Map in Go ?
  14. How to Iterate Over Keys in a Map in Go ?
  15. How to Iterate Over Values in a Map in Go ?
  16. How to Iterate Over Entries (Key-Value Pairs) in a Map in Go ?
  17. How to Get the Size (Number of Key-Value Pairs) of a Map in Go ?
  18. How to Convert a Map to an Array of Keys in Go ?
  19. How to Convert a Map to an Array of Values in Go ?
  20. How to Convert a Map to an Array of Key-Value Pairs in Go ?
  21. How to Merge Two Maps in Go ?
  22. How to Copy a Map in Go ?
  23. How to Check if Two Maps are Equal in Go ?
  24. How to Sort a Map by Keys in Go ?
  25. How to Sort a Map by Values in Go ?
  26. How to Filter a Map Based on Keys in Go ?
  27. How to Filter a Map Based on Values in Go ?
  28. How to Reduce Values in a Map to a Single Value in Go ?
  29. How to Convert an Array of Key-Value Pairs to a Map in Go ?
  30. How to Convert a Map to a JSON String in Go ?
  31. How to Convert a JSON String to a Map in Go ?
  32. How to Swap Keys and Values in a Map in Go ?
  33. How to Create a Map of Maps in Go ?
  34. How to Iterate Over a Map of Maps in Go ?