Golang基础-数据结构-map

这篇博客介绍了 Golang 中的数据结构 Map,包括如何定义、初始化、访问元素、删除元素、遍历以及特殊情况下的遍历顺序。还讨论了如何判断 Map 中元素是否存在,以及 Map 类型元素为切片的情况。最后提供了两个案例,一个是判断两个 Map 是否包含相同键值,另一个是寻找最长不含重复字符的子串问题。
摘要由CSDN通过智能技术生成

定义

map:一个无序的key-value对的集合,其中所有的key的值不同,通过给定的key对其进行检索、更新或删除可以在 O(1) 的时间复杂度内完成。

map[KeyType]ValueType

其中 KeyType表示键的类型 ValueType表示键对应值的类型

基本使用

初始化

make(map[KeyType]ValueType, [cap])

其中 cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。

ages := make(map[string]int)

map字面值的语法创建map,同时指定一些初始值

ages := map[string]int{
   
    "alice":   31,
    "tom": 34,
}

相当于

ages := make(map[string]int)
ages["alice"] = 31
ages["tom"] = 34

元素的访问 key中的value

ages["jack"] = 32
fmt.Println(ages["jack"]) // "32"

删除元素

格式:delete(map, key)

delete(ages, "alice") // remove element ages["alice"]

遍历

可以用for-range进行遍历

for name, age := range ages {
   
    fmt.Printf("%s\t%d\n", name, age)
}

注意:遍历的顺序是随机的

这是故意的,每次都使用随机的遍历顺序可以强制要求程序不会依赖具体的哈希函数实现。----《Go语言圣经》

按指定顺序遍历

如果要按顺序遍历key/value对,我们必须显式地对key进行排序,可以使用sort包的Strings函数对字符串slice进行排序。

import "sort"

var names []string
for name := range ages {
   
    names = append(names, name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值