七、7.映射(map)

1.声明

map 声明需要指定组成元素 key 和 value 的类型,在声明后,会被初始化为 nil,表示
暂不存在的映射

2.初始化

a) 使用字面量初始化:map[ktype]vtype{k1:v1, k2:v2, …, kn:vn}
b) 使用字面量初始化空映射:map[ktype]vtype{ }
c) 使用 make 函数初始化
make(map[ktype]vtype),通过 make 函数创建映射

package main

import "fmt"
func main() {
    var scores map[string]int
    fmt.Printf("%T %#v\n", scores, scores)
    fmt.Println(scores == nil)
    //scores = map[string]int{}
    scores = make(map[string]int)
    fmt.Println(scores)
    scores = map[string]int{"haha": 100, "www": 200}
    fmt.Println(scores)
    //增、删、改、查
    //当通过key访问value的时候,如果key不存在,会返回value的当前类型的零值 例如value是int类型那么就是0
    fmt.Println(scores["haha"])
    fmt.Println(scores["aaa"])
    //判断key是否存在于映射中
    v, k := scores["abcd"]
    fmt.Println(v, k)
    //判断 k如果存在映射中 那么就打印value  当然v也可以用_来表示不要这个值 我只需要看key是否存在映射中
    if k {
        fmt.Println(scores["abcd"])
    }

    //if的另外一种书写方法,就是 if 后面跟初始化子语句;用分号分隔然后跟判断子语句
    if v, k := scores["abcd"]; k {
        fmt.Println(v, scores["abcd"])
    }
    //当key存在的时候 赋值是在修改value的值
    //当key不存在的时候 赋值是 增加map的key
    fmt.Println(scores)
    scores["haha"] = 1
    fmt.Println(scores)
    scores["cc"] = 300
    fmt.Println(scores)
    //删除
    delete(scores, "haha")
    fmt.Println(scores)
    //获取长度
    fmt.Println(len(scores))
    //遍历
    //映射是无序的,存放的顺序跟你遍历顺序可能不同
    for k, v := range scores {
        fmt.Println(k, v)
    }
    //key至少可以有==和!=运算,相同修改,不同添加,bool,整数,字符串,数组
    //value 是可以是任意类型
    var info map[string]map[string]int
    fmt.Println(info)
    info = map[string]map[string]int{"aaa": {"age": 24, "xuehao": 22}}
    fmt.Println(info["aaa"])
    info["aaa"] = map[string]int{"aa": 222}
    fmt.Println(info["aa"])
    delete(info["aaa"], "aa")
    fmt.Println(info["aaa"])
}
发布了92 篇原创文章 · 获赞 12 · 访问量 5690

猜你喜欢

转载自blog.csdn.net/weixin_45413603/article/details/104785675