您的位置:首页 > 编程语言 > Go语言

go语言之map的使用

2015-01-28 16:14 555 查看

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带模板的,这里也影响一些速度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: