func main() {
m := map[string]string{
"name": "ccmouse",
"course": "golang",
"site": "imooc",
"quality": "notbad",
}
m2 := make(map[string]int) // m2 == empty map
var m3 map[string]int // m3 == nil
fmt.Println("m, m2, m3:")
fmt.Println(m, m2, m3)
fmt.Println("Traversing map m")
for k, v := range m {
fmt.Println(k, v)
}
fmt.Println("Getting values")
courseName := m["course"]
fmt.Println(`m["course"] =`, courseName)
if causeName, ok := m["cause"]; ok {
fmt.Println(causeName)
} else {
fmt.Println("key 'cause' does not exist")
}
fmt.Println("Deleting values")
name, ok := m["name"]
fmt.Printf("m[%q] before delete: %q, %v\n",
"name", name, ok)
delete(m, "name")
name, ok = m["name"]
fmt.Printf("m[%q] after delete: %q, %v\n",
"name", name, ok)
}
运行结果:
m, m2, m3:
map[course:golang name:ccmouse quality:notbad site:imooc] map[] map[]
Traversing map m
name ccmouse
course golang
site imooc
quality notbad
Getting values
m["course"] = golang
key 'cause' does not exist
Deleting values
m["name"] before delete: "ccmouse", true
m["name"] after delete: "", false
总结:
1.创建:make(map[string]int)
2.获取元素:map[key]
3.key不存在时,获得value类型的初始值
4.用value, ok := m[key]判断是否存在key
5.delete删除key
6.range遍历
7. 不保证遍历顺序,用slice排序
8.使用len获取元素个数
9.除了map,slice,function的内建类型都可以作为key,因为map使用哈希表,必须可以比较相等
10.struct类型不包括map,slice,function,也能作为key