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带模板的,这里也影响一些速度。
有疑问加站长微信联系(非本文作者)