|
|
@@ -1,4 +1,7 @@
|
|
|
-#8.5 map排序
|
|
|
+# 8.5 map 的排序
|
|
|
+
|
|
|
+192
|
|
|
+
|
|
|
map默认是无序的,不管是按照key还是按照value默认都不排序(参见8.3节)
|
|
|
|
|
|
如果你想为map排序,需要将key(或者value)拷贝到一个slice,再对slice排序(使用sort包,参见7.6.6),然后可以使用slice的for-range方法打印出所有的key和value。
|
|
|
@@ -6,21 +9,21 @@ map默认是无序的,不管是按照key还是按照value默认都不排序(
|
|
|
下面有一个示例:
|
|
|
|
|
|
示例 8.6 [sort_map.go](examples/chapter_8/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 {
|
|
|
@@ -42,9 +45,9 @@ map默认是无序的,不管是按照key还是按照value默认都不排序(
|
|
|
|
|
|
输出结果:
|
|
|
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 /
|
|
|
+ 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 / [[email protected] go]$ sz -be sort_map.go
|
|
|
+ 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 / [[email protected] go]$ sz -be sort_map.go
|
|
|
|
|
|
但是如果你想要一个排序的列表你最好使用结构体slice,这样会更有效:
|
|
|
|