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 元素
package main
import "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 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() {
keys := make([]string, len(barVal))
i := 0
for k, _ := range barVal {
keys[i] = k
i++
}
sort.Strings(keys)
for _, k := range keys {
fmt.Printf("key is %v, value is %v\n", k, barVal[k])
}
}