map声明

var map1 map[keytype]valuetype
var map1 map[string]int
未初始化的 map 的值是 nil。
可以选择标明 map 的初始容量 capacity,就像这样:make(map[keytype]valuetype, cap)

map的操作

创建:make(map[string]int)
获取元素
key不存在时,获得value类型的初始值
用value,ok := m[key]来判断是否存在key
用delete删除一个key delete(map1, key1)

map的遍历

使用range遍历key,或者遍历key,value对
不保证遍历顺序,如需顺序,需手动对key排序

map类型的切片

获取一个 map 类型的切片,我们必须使用两次 make() 函数,第一次分配切片,第二次分配 切片中每个 map 元素

  1. package main
  2. import "fmt"
  3. func main() {
  4. items := make([]map[int]int,5)
  5. for i := range items {
  6. items[i] = make(map[int]int, 1)
  7. items[i][1] = 2
  8. }
  9. fmt.Printf("version a : %v\n", items)
  10. }

map的排序

如果你想为 map 排序,需要将 key(或者 value)拷贝到一个切片,再对切片排序(使用 sort 包,详见第 7.6.6 节),然后可以使用切片的 for-range 方法打印出所有的 key 和 value。

  1. package main
  2. import(
  3. "fmt"
  4. "sort"
  5. )
  6. var barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23,
  7. "delta": 87, "echo": 56, "foxtrot": 12,
  8. "golf": 34, "hotel": 16, "indio": 87,
  9. "juliet": 65, "kili": 43, "lima": 98}
  10. func main() {
  11. keys := make([]string, len(barVal))
  12. i := 0
  13. for k, _ := range barVal {
  14. keys[i] = k
  15. i++
  16. }
  17. sort.Strings(keys)
  18. for _, k := range keys {
  19. fmt.Printf("key is %v, value is %v\n", k, barVal[k])
  20. }
  21. }