Go语言中的复合数据类型:哈希表map

1 map 是什么?

[!note]+ 知识概述: map类型是一个无序键值对集合,map中的元素不允许重复

  • Map 用于存储 键值对形式的值
  • Map 中的每一个元素对应一个值对
  • Map 中的元素不允许重复
  • Map 保存对基础哈希表的引用。
  • Map 中的元素是无序

2 map是如何声明的?

2.1 var关键字声明

var m map[keyType]ValueType{key1:value1}

2.2 简短方式声明

m := map[keyType]ValueType{key1:value1}

2.3 内置函数make声明

[!note]- 内置函数make()声明,容量分为指定容量默认初始容量两种方式。

  • 若默认初始容量(不设置容量大小),当map类型的键值对数量超过初始容量时,Go运行时会自动增加map类型的容量,保证后续键值对正常插入。
m1 := make(map[keyType]ValueType)
m2 := make(map[keyType]ValueType, cap)  //cap为容量大小

3 map是如何计算长度和容量的?

想要获取map类型的变量长度,我们可使用==[[GO 内置函数-cap和len|内置函数len]]==计算,由于容量是不确定的,所以map不能使用cap获取其容量

4 Map 元素的添加或编辑

  m[key1] = Value1
  m[key2] = Value3

5 Map 元素的查看

key1Value = m[key1]

6 Map 元素的删除

[!note] 知识概要: 想要删除map类型变量中的某一个元素,我们可以通过使用==[[Go内置函数delete]]==根据键key来删除某个元素。

  • delete函数是删除map元素的唯一方法
  • key如果查询不存在,也不会抛出异常
delete(mapName,key)

7 Map 元素判断是否存在

val, ok := mapName[key]
if !ok {
    // key不存在
}

8 Map 元素的遍历

[!note] 知识概要: map元素的遍历,我们将使用到for...rang来实现。

for k,v := rang m{
  fmt.Println(k,v)
}

[!warning]+ 注意事项

  • 由于map元素是无序的,当多次遍历map元素时,每次map元素的次序将不同

9 map元素如何实现有序遍历?

[!think]+ 思考: 由于map是无序的键值对集合,那问题来了:该如何实现有序的键值对集合呢?

  • 使用GO 切片Slice来保存map元素的key,通过将map元素的key进行有序设置,然后通过遍历获取有序的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值