Golang map排序如何設(shè)置

小億
118
2023-10-21 14:28:24

在Go語(yǔ)言中,map是無(wú)序的,無(wú)法直接排序。但是可以通過(guò)將map的鍵或者鍵值對(duì)提取到slice中,然后使用sort包對(duì)slice進(jìn)行排序。

以下是一個(gè)示例代碼,展示如何對(duì)map的鍵進(jìn)行排序:

package main

import (
	"fmt"
	"sort"
)

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

	keys := make([]string, 0, len(m))
	for k := range m {
		keys = append(keys, k)
	}

	sort.Strings(keys)

	for _, k := range keys {
		fmt.Printf("%s: %d\n", k, m[k])
	}
}

輸出結(jié)果:

apple: 1
banana: 2
orange: 3

在這個(gè)示例中,首先創(chuàng)建一個(gè)空的字符串切片keys,然后使用for循環(huán)遍歷map的鍵,并將鍵添加到keys切片中。接著,使用sort.Strings()函數(shù)對(duì)切片keys進(jìn)行排序。最后,使用for循環(huán)遍歷排序后的切片,按照排序后的順序打印出map的鍵和對(duì)應(yīng)的值。

如果要對(duì)map的鍵值對(duì)進(jìn)行排序,可以使用一個(gè)自定義的結(jié)構(gòu)體切片,并實(shí)現(xiàn)sort.Interface接口的Len()Less()Swap()方法進(jìn)行排序。具體實(shí)現(xiàn)方式可以參考Go語(yǔ)言官方文檔中的示例代碼:https://golang.org/pkg/sort/#example__sortKeys

0