go语言之map的使用

bojie5744 · · 1712 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

go语言之map的使用

go语言的map,和c/C++语言的功能使用差不多,但是也存在很多差别。map在go语言大并发业务开发中是经常用,例如用户信息的广播等。
下面看看相关使用代码

map的遍历和删除,添加
package main

import (
    "fmt"
)

func delete_msg(name_age map[string]int, key string) {
    delete(name_age, key)
}

func search(name_age map[string]int) {
    for key, value := range name_age {
        fmt.Printf("%s-%d\n", key, value)
    }
}
func main() {
    name_age := map[string]int{}
    name_age["bojie"] = 21
    name_age["csdn"] = 10
    name_age["hg"] = 100
    name_age["hk"] = 18
    search(name_age)

    delete_msg(name_age, "bojie")
    fmt.Printf("删除bojie后\n")
    search(name_age)

    delete_msg(name_age, "bojie")
    fmt.Printf("再次删除bojie后\n")
    search(name_age)

    fmt.Printf("再次添加hg关键字后\n")
    name_age["hg"] = 101
    search(name_age)
}


输出结果是以下
第一次点击编译后的记录
bojie-21
csdn-10
hg-100
hk-18
删除bojie后
csdn-10
hg-100
hk-18
再次删除bojie后
csdn-10
hg-100
hk-18
再次添加hg关键字后
csdn-10
hg-101
hk-18

再次点击重新编译后运行的记录
hk-18
bojie-21
csdn-10
hg-100
删除bojie后
csdn-10
hg-100
hk-18
再次删除bojie后
hk-18
csdn-10
hg-100
再次添加hg关键字后
csdn-10
hg-101
hk-18



通过结果发现
1.map删除不存在的关键字不会产生错误。
2.map插入存在的关键字会替换原来存在的值,这个和C++ STL的map不同,STL::map不能插入,能插入相同的是STL::set容器。
3.map的遍历通过for key, value := range name_age这样的形式去遍历。
4.map的删除通过delete进行删除
5.对,你会发现每次重新编译打开的遍历的顺序是不同的。
6.在删除函数中,我们直接传递map变量进行删除操作,但是发现,输出的结果是正确的,可发现,map是和slice一样是廉价传递。

*至于性能和STL::map相比怎么样,可以自行测试,但是你要注意一点就是STL::map带模板的,这里也影响一些速度。










有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:bojie5744

查看原文:go语言之map的使用

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1712 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传