1. 基础
    和python的dict一样是无序的
    map使用hash表实现,所以key类型必须可以比较相等
    除了slice map function 的内建类型都可以作为key
    Struct 不包括上面的类型就可以作为key

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    //make(map[kType]vType)
    m := make(map[string]string)// m == empty map
    fmt.Println(m)//map[]
    m1 := map[string]string{
    "name":"svz",
    "language":"go",//,不能省略,或者把}提到这里
    }
    fmt.Println(m1)//map[name:svz]
    var m2 map[string]string // m2 == nil

    //访问
    fmt.Println(m1["name"])//svz
    //如果访问的key不存在返回的是zeroValue
    fmt.Println(m1["names"])//打印的是空串""
    //可以通过接受ok值判断是否有这个key
    name, ok := m1["name"]//svz true
    fmt.Println(name, ok)
    names, ok := m1["names"]// false 注意前面有个空串""
    fmt.Println(names, ok)

    //遍历 同样可以用 _ 忽略
    for k, v := range m1{
    fmt.Println(k, v)
    }
    /*
    name svz
    language golang
    */
1
2
3
4
5
6
7
8
9
10

2. 相关函数

delete(map,key)

```go
fmt.Println(m1)//map[name:123 language:321]
delete(m1,"name")
fmt.Println(m1)//map[language:321]