Golang map 的排序
    		       		warning:
    		            这篇文章距离上次修改已过426天,其中的内容可能已经有所变动。
    		        
        		                
                在Go语言中,map是一种内置的数据类型,它用于存储无序的键值对。如果你想对map的键或值进行排序,你需要先将它们转换成可排序的类型,如切片。
以下是一些方法来对map进行排序:
- 按键排序:
 
package main
 
import (
    "fmt"
    "sort"
)
 
func main() {
    m := map[string]int{
        "charlie": 30,
        "alpha":   10,
        "bravo":   20,
    }
 
    var keys []string
    for k := range m {
        keys = append(keys, k)
    }
    sort.Strings(keys)
 
    for _, k := range keys {
        fmt.Println("Key:", k, "Value:", m[k])
    }
}- 按值排序:
 
package main
 
import (
    "fmt"
    "sort"
)
 
func main() {
    m := map[string]int{
        "charlie": 30,
        "alpha":   10,
        "bravo":   20,
    }
 
    // 将map的键放入切片
    var keys []string
    for k := range m {
        keys = append(keys, k)
    }
 
    // 按值排序
    sort.Slice(keys, func(i, j int) bool {
        return m[keys[i]] < m[keys[j]]
    })
 
    for _, k := range keys {
        fmt.Println("Key:", k, "Value:", m[k])
    }
}以上两种方法都是先将map的键放入一个切片,然后使用sort包提供的函数对切片进行排序。然后,你可以遍历排序后的键切片,并使用它们来访问map中的元素。
注意,这些方法都需要将所有的键复制到一个切片中,这可能不适用于大型的map。对于大型的map,你可能需要考虑使用不同的数据结构,例如trees。
评论已关闭