This commit is contained in:
Unknwon
2015-02-24 00:41:12 -05:00
parent 80344c8375
commit 64bb8b3ea3
4 changed files with 54 additions and 46 deletions

View File

@@ -9,7 +9,7 @@
## 翻译进度 ## 翻译进度
8.4 [map 类型的切片](eBook/08.4.md) 8.5 [map 的排序](eBook/08.5.md)
## 支持本书 ## 支持本书

View File

@@ -1,30 +1,29 @@
# 8.5 map 的排序 # 8.5 map 的排序
192 map 默认是无序的,不管是按照 key 还是按照 value 默认都不排序(详见第 8.3 节)。
map默认是无序的不管是按照key还是按照value默认都不排序参见8.3节) 如果你想为 map 排序,需要将 key或者 value拷贝到一个 slice再对 slice 排序(使用 sort 包,详见第 7.6.6 节),然后可以使用 slice 的 for-range 方法打印出所有的 key 和 value。
如果你想为map排序需要将key或者value拷贝到一个slice再对slice排序使用sort包参见7.6.6然后可以使用slice的for-range方法打印出所有的key和value。
下面有一个示例: 下面有一个示例:
示例 8.6 [sort_map.go](examples/chapter_8/sort_map.go) 示例 8.6 [sort_map.go](examples/chapter_8/sort_map.go)
// the telephone alphabet: ```go
package main // the telephone alphabet:
import ( package main
import (
"fmt" "fmt"
"sort" "sort"
) )
var ( var (
barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23, barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23,
"delta": 87, "echo": 56, "foxtrot": 12, "delta": 87, "echo": 56, "foxtrot": 12,
"golf": 34, "hotel": 16, "indio": 87, "golf": 34, "hotel": 16, "indio": 87,
"juliet": 65, "kili": 43, "lima": 98} "juliet": 65, "kili": 43, "lima": 98}
) )
func main() { func main() {
fmt.Println("unsorted:") fmt.Println("unsorted:")
for k, v := range barVal { for k, v := range barVal {
fmt.Printf("Key: %v, Value: %v / ", k, v) fmt.Printf("Key: %v, Value: %v / ", k, v)
@@ -41,22 +40,27 @@ map默认是无序的不管是按照key还是按照value默认都不排序
for _, k := range keys { for _, k := range keys {
fmt.Printf("Key: %v, Value: %v / ", k, barVal[k]) fmt.Printf("Key: %v, Value: %v / ", k, barVal[k])
} }
} }
```
输出结果: 输出结果:
unsorted: 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: 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 / [fangjun@st01-dstream-0001.st01.baidu.com 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 / [fangjun@st01-dstream-0001.st01.baidu.com go]$ sz -be sort_map.go
但是如果你想要一个排序的列表你最好使用结构体slice这样会更有效 但是如果你想要一个排序的列表你最好使用结构体 slice这样会更有效
type struct { ```go
type struct {
key string key string
value int value int
} }
```
## 链接
##链接
- [目录](directory.md) - [目录](directory.md)
- 上一节:[maps分](08.4.md) - 上一节:[map 类型的切](08.4.md)
- 下一节:[倒置map](08.6.md) - 下一节:[map 的键值对调](08.6.md)

View File

@@ -1,4 +1,7 @@
#8.6 倒置map # 8.6 map 的键值对调
194
这里倒置是指调换key和value。如果map的值类型可以作为key且所有的value是唯一的那么通过下面的方法可以简单的做到倒置 这里倒置是指调换key和value。如果map的值类型可以作为key且所有的value是唯一的那么通过下面的方法可以简单的做到倒置
示例 8.7 [invert_map.go](examples/chapter_8/invert_map.go) 示例 8.7 [invert_map.go](examples/chapter_8/invert_map.go)

View File

@@ -71,6 +71,7 @@
- 8.3 [for-range 的配套用法](08.3.md) - 8.3 [for-range 的配套用法](08.3.md)
- 8.4 [map 类型的切片](08.4.md) - 8.4 [map 类型的切片](08.4.md)
- 8.5 [map 的排序](08.5.md) - 8.5 [map 的排序](08.5.md)
- 8.6 [将 map 的键值对调](08.6.md)
- 第9章package - 第9章package
- 第10章结构struct与方法method - 第10章结构struct与方法method
- 第11章接口interface与反射reflection - 第11章接口interface与反射reflection