GO語言————8.5 map 的排序
8.5 map 的排序
map 預設是無序的,不管是按照 key 還是按照 value 預設都不排序(詳見第 8.3 節)。
如果你想為 map 排序,需要將 key(或者 value)拷貝到一個切片,再對切片排序(使用 sort 包,詳見第 7.6.6 節),然後可以使用切片的 for-range 方法列印出所有的 key 和 value。
下面有一個示例:
示例 8.6 sort_map.go:
// the telephone alphabet:
package main
import (
"fmt"
"sort"
)
var (
barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23,
"delta": 87, "echo": 56, "foxtrot": 12,
"golf": 34, "hotel": 16, "indio": 87,
"juliet": 65, "kili": 43, "lima": 98}
)
func main() {
fmt.Println("unsorted:")
for k, v := range barVal {
fmt.Printf("Key: %v, Value: %v / ", k, v)
}
keys := make([]string, len(barVal))
i := 0
for k, _ := range barVal {
keys[i] = k
i++
}
sort.Strings(keys)
fmt.Println()
fmt.Println("sorted:")
for _, k := range keys {
fmt.Printf("Key: %v, Value: %v / ", k, barVal[k])
}
}
輸出結果:
unsorted:
Key: bravo, Value: 56 / Key: echo, Value: 56 / Key: indio, Value: 87 / Key: juliet, Value: 65 / Key: alpha, Value: 34 / Key: charlie, Value: 23 / Key: delta, Value: 87 / Key: foxtrot, Value: 12 / Key: golf, Value: 34 / Key: hotel, Value: 16 / Key: kili, Value: 43 / Key: lima, Value: 98 /
sorted:
Key: alpha, Value: 34 / Key: bravo, Value: 56 / Key: charlie, Value: 23 / Key: delta, Value: 87 / Key: echo, Value: 56 / Key: foxtrot, Value: 12 / Key: golf, Value: 34 / Key: hotel, Value: 16 / Key: indio, Value: 87 / Key: juliet, Value: 65 / Key: kili, Value: 43 / Key: lima, Value: 98 /
但是如果你想要一個排序的列表你最好使用結構體切片,這樣會更有效:
type name struct {
key string
value int
}
相關文章
- Go語言mapGo
- Go語言學習——mapGo
- Go語言map的底層實現Go
- GO語言————8.4 map 型別的切片Go型別
- Go語言——sync.Map原始碼分析Go原始碼
- go語言學習-陣列-切片-mapGo陣列
- Go語言入門系列(四)之map的使用Go
- GO語言————8.6 將 map 的鍵值對調Go
- Go語言小知識之map遍歷Go
- GO語言————8.1 MAP宣告、初始化和makeGo
- Go 為什麼不在語言層面支援 map 併發?Go
- Go語言————1、初識GO語言Go
- 深度解密Go語言之 map解密Go
- go slice/map型別 排序(選擇排序演算法)Go型別排序演算法
- go語言的介面Go
- Go語言的”坑“Go
- GO語言Go
- GO語言————2、GO語言環境安裝Go
- go語言與c語言的相互呼叫GoC語言
- Go_go語言初探Go
- 【Go 語言入門專欄】Go 語言的起源與發展Go
- Go語言版本的forgeryGo
- Go語言的那些坑Go
- Go語言的前景分析Go
- 【Go語言入門系列】(八)Go語言是不是面嚮物件語言?Go物件
- go 語言常量Go
- go 語言切片Go
- go語言使用Go
- 深度解密 Go 語言之 sync.map解密Go
- Go是Google的語言,而不是我們的語言Go
- Go中的MapGo
- 什麼是Go語言?Go語言有什麼特點?Go
- go語言的31個坑Go
- go語言的初體驗Go
- Go語言的互斥鎖MutexGoMutex
- Google的Go語言速度提升Go
- Go 語言的演化歷程Go
- Go語言的演化歷程Go