新闻资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻资讯列表

golang map排序如何设置,golang map key struct

发布时间:2023-11-01 23:32:20

golang map排序如何设置

在Go语言中,map是无序的,不支持直接排序。但是可以通过将map中的键和值存储到一个切片中,然后对切片进行排序来实现对map的排序。

以下是一个示例代码,演示如何对map依照键进行排序:

package main

import (
	"fmt"
	"sort"
)

func main() {
	m := map[string]int{
		"apple":  5,
		"banana": 2,
		"orange": 4,
	}

	// 创建一个切片存储map的键和值
	var keyValuePairs []struct {
		Key   string
		Value int
	}
	for k, v := range m {
		keyValuePairs = append(keyValuePairs, struct {
			Key   string
			Value int
		}{Key: k, Value: v})
	}

	// 对切片依照键进行排序
	sort.Slice(keyValuePairs, func(i, j int) bool {
		return keyValuePairs[i].Key < keyValuePairs[j].Key
	})

	// 打印排序后的结果
	for _, pair := range keyValuePairs {
		fmt.Printf("%s: %d
", pair.Key, pair.Value)
	}
}

注意,上述代码使用了一个匿名结构体来存储map的键和值,由于Go语言的切片是没法存储区分类型的元素的。另外,还使用了sort.Slice函数来对切片进行排序,其中传入的匿名函数定义了排序的规则。

如果要依照值进行排序,只需将匿名函数中的比较条件修改成return keyValuePairs[i].Value < keyValuePairs[j].Value便可。