zoukankan      html  css  js  c++  java
  • 【Golang】快速复习指南QuickReview(三)——map

    map

    学名:映射关系容器。

    俗名:键值对key-value

    map跟slice一样,依然是一个引用类型。

    1.C#中的字典

    根据map的特点,博主类比的是C#中字典Dictionary,同样都是键值对。

    //定义 初始化
    Dictionary<int, string> dic = new Dictionary<int, string>
    {
        {1,"学生"},
        {2,"老师"},
        {3,"家长"}
    };
    
    //新增
    dic.Add(4, "校长");
    
    //判断是否含key
    if (dic.ContainsKey(1))
    {
    
    }
    
    //判断是否含value
    if (dic.ContainsValue("学生")) { }
    
    //遍历字典
    foreach (KeyValuePair<int, string> kv in dic)
    {
    
    }
    //删除指定key的元素
    dic.Remove(1);
    
    //清空字典
    dic.Clear();
    

    2.Golang中的map

    2.1 定义 初始化

    make(map[KeyType]ValueType, [cap]),cap可选

    testMap := make(map[int]string, 3)
    testMap[1] = "学生"
    testMap[2] = "老师"
    testMap[3] = "家长"
    fmt.Println(testMap)
    
    map[1:学生 2:老师 3:家长]
    

    2.2 遍历

    //遍历
    for k, v := range testMap {
        fmt.Println(k, v)
    }
    
    1 学生
    2 老师
    3 家长
    

    2.3 删除

    删除,使用内置函数delete()

    func delete(m map[Key]Type, key Key)
    
    //删除
    delete(testMap, 1)
    
    for k, v := range testMap {
        fmt.Println(k, v)
    }
    
    3 家长
    2 老师
    

    2.4 重点来了

    切片是一种类型,且使用频繁,切片就也能作为map的值value

    var mapValueSlice = make(map[string][]string, 3)
    var sc []string
    sc = append(sc, "成都", "绵阳", "宜宾")
    var sx = []string{"西安", "汉中", "榆林"}
    mapValueSlice["四川"] = sc
    mapValueSlice["陕西"] = sx
    fmt.Println(mapValueSlice)
    
    map[四川:[成都 绵阳 宜宾] 陕西:[西安 汉中 榆林]]
    

    最后说一下,golang的源码读懂需要基础语法很牢固,后面的函数,方法接收者,指针,参数,返回值,通道等等,远远一看,中括号[]横飞,*,其实万变不离其宗,都是这些基础类型按照语义组合而成。

    再次强调:这个系列并不是教程,如果想系统的学习,博主可推荐学习资源。

  • 相关阅读:
    摘:复习STL
    C#:在其它dll中调用此文件中的资源
    摘录:CSharp调用C动态链接库详解
    C/C++基本数据类型
    mysqlreport指南
    mysqlreport工具
    收藏一个简洁的PHP可逆加密函数
    解决MySQL查询数据不一致诟病
    Ubuntu下搭建C/C++开发环境
    mysql:主键和索引的区别
  • 原文地址:https://www.cnblogs.com/RandyField/p/14024355.html
Copyright © 2011-2022 走看看