golang中的map

map的操作特性

1)初始化

map分别支持字面量初始化和内置函数make()的初始化

字面量初始化:

func MapInitByLiteral(){
    m:= map[string] int{
            "apple": 2,
            "banana" : 3,
            }

for k,v:=range m{
        fmt.Printf("%s-%d\n" , k,v)
            }
}

内置函数make()初始化:

func main() {
	m := make(map[string]int, 10)
	m["apple"] = 2
	m["banana"] = 3
	for k , v := range m{
		fmt.Printf("%s-%d\n",k,v)
	}
}

使用make()函数初始化时,可以指定map的容量(也可以不指定)。指定容量可以有效地减少内存分配的次数,有效的利用应用性能。

2)map的增删改查操作

func main() {
	m := make(map[string]int, 10)
	m["apple"] = 2	//	添加操作
	m["banana"] = 3
	for k , v := range m{
		fmt.Printf("%s-%d\n",k,v)
	}
	m["apple"] = 3 //修改操作
	m["doog"] = 12
	delete(m,"apple") //删除操作
	v , exist := m["doog"]	//查询操作
	if exist{
		fmt.Printf("doog - v=%d\n",v)
	}
}

删除元素使用内置函数delete()完成,,delete()没有返回值,在map为nil或指定的键不存在的情况下,delete ()也不会报错,相当于空操作。

在查询操作中,最多可以给两个变量赋值,第一个为值,第二个为bool类型的变量,用于指示是否存在指定的键,如果键不存在,那么第一个值为相应类型的零值。如果只指定一个变量,那么该变量仅表示该键对应的值,如果键不存在,那么该值同样为相应类型的零值。
内置函数len()可以查询map的长度,该长度反映map中存储的键值对数。
 

初始化map时推荐使用内置函数make ()并指定预估的容量。


修改键值对时,需要先查询指定键是否存在,否则 map将创建新的键值对。

查询键值对时,最好检查键是否存在,避免操作零值。


避免并发读写map,如果需要并发读写,则可以使用额外的锁(互斥锁、读写锁),也可以考虑使用标准库sync包中的sync.Map。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值