Go Tutorials

Go Programs

How to Sort a Map by Keys in Go


How to Sort a Map by Keys in Go ?

Answer

To sort a map by keys in Go, you can extract the keys, sort them, and then iterate over the sorted keys to access the values. This method provides a way to display map entries in a sorted order.



✐ Examples

1 Sorting a Map by Keys Using a Slice of Keys

We can sort a map by keys in Go by extracting the keys into a slice, sorting the slice, and then iterating over the sorted keys to access the map values.

For example,

  1. We start by importing the fmt and sort packages, which provide the necessary functions for input-output operations and sorting.
  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 extract the keys from the map and store them in a slice named keys.
  4. We sort the slice of keys using the sort.Ints function.
  5. We iterate over the sorted keys and print the key-value pairs in sorted order using the fmt.Println function.

Go Program

package main

import (
    "fmt"
    "sort"
)

func main() {
    // Declare and initialize a map
    myMap := map[int]string{
        3: "three",
        1: "one",
        2: "two",
    }

    // Extract the keys and store them in a slice
    keys := make([]int, 0, len(myMap))
    for key := range myMap {
        keys = append(keys, key)
    }

    // Sort the slice of keys
    sort.Ints(keys)

    // Iterate over the sorted keys and print the key-value pairs
    fmt.Println("Sorted Map by Keys:")
    for _, key := range keys {
        fmt.Printf("%d: %s\n", key, myMap[key])
    }
}

Output

Sorted Map by Keys:
1: one
2: two
3: three

2 Sorting a Map by Keys in Descending Order

We can sort a map by keys in descending order in Go by extracting the keys into a slice, sorting the slice in reverse order, and then iterating over the sorted keys to access the map values.

For example,

  1. We start by importing the fmt and sort packages, which provide the necessary functions for input-output operations and sorting.
  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 extract the keys from the map and store them in a slice named keys.
  4. We sort the slice of keys in reverse order using the sort.Sort function with a custom sort interface.
  5. We iterate over the sorted keys and print the key-value pairs in sorted order using the fmt.Println function.

Go Program

package main

import (
    "fmt"
    "sort"
)

func main() {
    // Declare and initialize a map
    myMap := map[int]string{
        3: "three",
        1: "one",
        2: "two",
    }

    // Extract the keys and store them in a slice
    keys := make([]int, 0, len(myMap))
    for key := range myMap {
        keys = append(keys, key)
    }

    // Sort the slice of keys in descending order
    sort.Sort(sort.Reverse(sort.IntSlice(keys)))

    // Iterate over the sorted keys and print the key-value pairs
    fmt.Println("Sorted Map by Keys (Descending):")
    for _, key := range keys {
        fmt.Printf("%d: %s\n", key, myMap[key])
    }
}

Output

Sorted Map by Keys (Descending):
3: three
2: two
1: one

3 Sorting a Map by String Keys

We can sort a map by string keys in Go by extracting the keys into a slice, sorting the slice, and then iterating over the sorted keys to access the map values.

For example,

  1. We start by importing the fmt and sort packages, which provide the necessary functions for input-output operations and sorting.
  2. We declare and initialize a map named myMap with some key-value pairs. In this example, the map has string keys and integer values.
  3. We extract the keys from the map and store them in a slice named keys.
  4. We sort the slice of keys using the sort.Strings function.
  5. We iterate over the sorted keys and print the key-value pairs in sorted order using the fmt.Println function.

Go Program

package main

import (
    "fmt"
    "sort"
)

func main() {
    // Declare and initialize a map
    myMap := map[string]int{
        "three": 3,
        "one": 1,
        "two": 2,
    }

    // Extract the keys and store them in a slice
    keys := make([]string, 0, len(myMap))
    for key := range myMap {
        keys = append(keys, key)
    }

    // Sort the slice of keys
    sort.Strings(keys)

    // Iterate over the sorted keys and print the key-value pairs
    fmt.Println("Sorted Map by Keys:")
    for _, key := range keys {
        fmt.Printf("%s: %d\n", key, myMap[key])
    }
}

Output

Sorted Map by Keys:
one: 1
two: 2
three: 3

Summary

In this tutorial, we learned How to Sort a Map by Keys 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 ?