map声明
var map1 map[keytype]valuetypevar 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 元素
package mainimport "fmt"func main() {items := make([]map[int]int,5)for i := range items {items[i] = make(map[int]int, 1)items[i][1] = 2}fmt.Printf("version a : %v\n", items)}
map的排序
如果你想为 map 排序,需要将 key(或者 value)拷贝到一个切片,再对切片排序(使用 sort 包,详见第 7.6.6 节),然后可以使用切片的 for-range 方法打印出所有的 key 和 value。
package mainimport("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() {keys := make([]string, len(barVal))i := 0for k, _ := range barVal {keys[i] = ki++}sort.Strings(keys)for _, k := range keys {fmt.Printf("key is %v, value is %v\n", k, barVal[k])}}
