Golang学习笔记(八):Map

本文深入讲解Go语言中的Map数据结构,包括其定义、创建、使用方法及注意事项,如长度获取、元素访问、删除操作和遍历技巧。同时,探讨了如何判断Map中Key的存在性。

Map,也称为哈希表,是Go语言为我们提供的另一种很实用的数据结构,它表示一个无序的key/value对集合,哈希表中的每个key值都是唯一的,我们可以通过map中key值检索、更新、删除对应的value值。

Map是引用类型,底层引用了一个哈希表,map类型可用map[K]V表示,其中K表示key,V表示value,注意key必须是可以使用==进行相等比较的数据类型,但不建议使用浮点型作为key,而value则可以是任意的数据类型。

定义与使用

创建一个map的类型,主要有两种方式,通过使用内置函数make或字面量赋值。

make

var m = make(map[string]int)
复制代码

字面量

var m = map[string]int{"one":1,"two":2}
复制代码

获取长度、访问元素与赋值

创建了map类型后,就可以访问map的元素或为元素赋值了,使用内置函数len()还可以获取map长度,也就是map元素的个数。

m["three"] = 3
fmt.Println(len(m))//输出3
fmt.Println(m["one"])
复制代码

注意事项

需要注意的是,map中的元素不可取址,如以下代码所示

a = &m["one"]//错误
复制代码

通过字面量赋值量,可以使用{}直接声明一个空的map类型, 空的map并不等nil,而直接声明一个map类型时,则该map变量的值为nil。如:

m1 := map[string]int{}//空的map
var m2 map[string]int //nil 
复制代码

等nil的map类型变量,必须使用make或字面量初始化,使其引用一个哈希表,否则,直接向元素赋值,则会报panic错误。

m1["one"] = 10//m1引用一个哈希表
复制代码

删除操作

如果想删除map中的元素,则可以使用内置delete()函数,函数的参数为该map和其中元素的key值。

delete(m,"one")
复制代码

当然删除的key不存在时,并不会报错,而是返回0,其实,如果通过key访问元素时,如果key不存在,也会返回对应value的零值。

遍历

map也像数组一样,可以使用for...range语句遍历迭代,但是map的迭代顺序并不确定。也就是遍历是无序的。

for k,v := range m {
		fmt.Println(k, v)
}
复制代码

判断key是否存在

前面我们知道,如果map的key不存在,map会返回value的类型的零值,但存在的key,其他的value也可能为零值,所以我们没有通过这种方式知道map是否存在某个key值。

Go支持使用key访问map时候,返回对应value值和一个是否存在的标识,为bool类型,一般命名为ok,如:

v,ok := m["four"]

if ok { // true表示key存在,false表示不存在
    
}

复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值