Files
the-way-to-go_ZH_CN/eBook/08.6.md
Guobiao Mei 07d26e14d1 Fix links to the code examples
Change-Id: I644c6a516abab2577353644c128102457deeb41a
2014-12-18 16:49:46 -05:00

45 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#8.6 倒置map
这里倒置是指调换key和value。如果map的值类型可以作为key且所有的value是唯一的那么通过下面的方法可以简单的做到倒置
示例 8.7 [invert_map.go](examples/chapter_8/invert_map.go)
package main
import (
"fmt"
)
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() {
invMap := make(map[int]string, len(barVal))
for k, v := range barVal {
invMap[v] = k
}
fmt.Println("inverted:")
for k, v := range invMap {
fmt.Printf("Key: %v, Value: %v / ", k, v)
}
fmt.Println()
}
输出结果:
inverted:
Key: 34, Value: golf / Key: 23, Value: charlie / Key: 16, Value: hotel / Key: 87, Value: delta / Key: 98, Value: lima / Key: 12, Value: foxtrot / Key: 43, Value: kili / Key: 56, Value: bravo / Key: 65, Value: juliet /
如果原始value值不唯一那么这么做肯定会出错为了保证不出错当遇到不唯一的key时应当立刻停止这样可能会导致没有包含原map的所有键值对一种解决方法就是仔细检查唯一性并且使用多值map比如使用`map[int][]string`类型。
练习 8.2 map_drinks.go
构造一个将英文饮料名映射为法语(或者任意你的母语)的集合;先打印所有的饮料,然后打印原名和翻译后的名字。接下来按照英文名排序后再打印出来。
##链接
- [目录](directory.md)
- 上一节:[map排序](08.5.md)
- 下一节:[](09.0.md)