• 美好生活的价值追求和实现路径-社会关注-理论频道-中工网 2018-05-21
  • 保罗亲手为自己圆梦 火箭勇士双双会师西部决赛 2018-05-21
  • Floating production, storage and offloading vessel delivered in Qingdao 2018-05-20
  • 汽車定位跟蹤官員意圖敲詐 追蹤器該怎麼管 2018-05-20
  • 工作队精准发力助力贫困村“摘帽” 2018-05-20
  • 中消协发布榨汁机比较试验结果 2018-05-20
  • 游花海林芝,赏野生桃花 2018林芝桃花节29日开幕 2018-05-20
  • 19米99轻松卫冕 巩立姣:没突破20米有点可惜 2018-05-18
  • 海南省工商局出实招提高干部素质 强化工作作风 2018-05-18
  • 栾蕾英亮相TOP100时尚盛典 盛装亮相仙气十足 2018-05-18
  • 以合法形式掩盖非法目的的合同效力 2018-05-18
  • 4月解放领跑重卡行业 红岩保持增幅第一 2018-05-17
  • 不查“后来”,中国电影难有未来 2018-05-16
  • 欧盟公司与伊朗合作将遭美国制裁?德媒:欧美或渐行渐远 2018-05-16
  • 《青草的清香》:探索感官和情感的发展史 2018-05-16
  • GO学习笔记:GO基础--map

    栏目: GO语言 发布于: 2014-08-20 11:14:25

    GO学习笔记:GO基础--map

    声明map的基本格式:

    var mapName map[keyType]valueType
    map的读取和设置也类似slice一样,通过key来操作,只是slice的index只能是`int`类型,而map多了很多类型,可以是int,可以是string及所有完全定义了==与!=操作的类型。

    示例代码:

    // 声明一个key是字符串,值为int的字典,这种方式的声明需要在使用之前使用make初始化
    var numbers map[string]int
    // 另一种map的声明方式
    numbers := make(map[string]int)
    numbers["one"] = 1  //赋值
    numbers["ten"] = 10 //赋值
    numbers["three"] = 3
    
    fmt.Println("第三个数字是: ", numbers["three"]) // 读取数据
    // 打印出来如:第三个数字是: 3
    这个map就像我们平??吹降谋砀褚谎?,左边列是key,右边列是值

    使用map过程中需要注意的几点:

        1、map是无序的,每次打印出来的map都会不一样,它不能通过index获取,而必须通过key获取

        2、map的长度是不固定的,也就是和slice一样,也是一种引用类型

        3、内置的len函数同样适用于map,返回map拥有的key的数量

        4、map的值可以很方便的修改,通过numbers["one"]=11可以很容易的把key为one的字典值改为11

        5、map和其他基本型别不同,它不是thread-safe,在多个go-routine存取时,必须使用mutex lock机制

    map的初始化可以通过key:val的方式初始化值,同时map内置有判断是否存在key的方式

    通过delete删除map的元素:

    // 初始化一个字典
    rating := map[string]float32{"C":5, "Go":4.5, "Python":4.5, "C++":2 }
    // map有两个返回值,第二个返回值,如果不存在key,那么ok为false,如果存在ok为true
    csharpRating, ok := rating["C#"]
    if ok {
        fmt.Println("C# is in the map and its rating is ", csharpRating)
    } else {
        fmt.Println("We have no rating associated with C# in the map")
    }
    
    delete(rating, "C")  // 删除key为C的元素
    上面说过了,map也是一种引用类型,如果两个map同时指向一个底层,那么一个改变,另一个也相应的改变:
    m := make(map[string]string)
    m["Hello"] = "Bonjour"
    m1 := m
    m1["Hello"] = "Salut"  // 现在m["hello"]的值已经是Salut了
    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:GO学习笔记:GO基础--map
    IT技术书籍推荐:
    疯狂Android讲义(第3版)
    疯狂Android讲义(第3版)
    李刚 (作者)
    移动互联网已经成为当今世界发展最快、市场潜力最大、前景最诱人的业务,而Android则是移动互联网上市场占有率最高的平台。 本书是《疯狂Android讲义》的第3版,本书基于最新的Android 5,并采用了Google推荐的IDE:Android Studio作为开发工具,书中每个案例、每个截图都全面升级到Android 5。本书全面介绍了Android应用开发的相关知识,全书内容覆盖了Android用户界面编程、Android四大组件、Android资源访问、图形/图像处理、事件处理机制、Android输入/输出处理、音频/视频多媒体应用开发、OpenGL与3D应用开发、网络通信编程、Android平台的Web Service、传感器应用开发、GPS应用开发、整合第三方Map服务等。