- 创建
map
:
map[key]value
map[key1]map[key2] value
make(map[string]int)
- 获取元素:
m[key]
key
不存在时,获得value
类型的初始值0
- 用
value, ok := m[key]
来判断是否存在key
- 用
delet
e删除一个key
- 使用
range
遍历key
,或者遍历key
, value
对
- 不保证遍历顺序,如需顺序,需手动对
key
排序
- 使用
len
来获得元素个数
- map使用哈希表,必须可以比较相等
- 除了
slice
, map
, function
对内建类型都可以作为key
Struct
类型不包含上述字段,也可以作为key
package main
import "fmt"
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")
}
// Deleting values
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)
}