如果❤️我的文章有帮助,欢迎点赞、关注。这是对我继续技术创作最大的鼓励。更多往期文章在我的个人博客
Golang 中 map 是一种无序的基于 键值对应
的数据结构,相当于其他编程语言中的字典
、hash
、HashTable
等。
key(索引)对应着 value(值),给定 key(索引) 就能够快速查询 对应 value(值)的数据结构。
map定义
map 的使用语法如下:
map[KeyType]ValueType
- KeyType: 表示
键
的类型。 - ValueType: 表示键对应的
值
的类型。
map 变量初始值为nil
,需要内置函数make()分配内存:
make(map[KeyType]ValueType, [cap])
由于 map 的容量上限是可以动态增长
,所以容量上限 cap 为可选参数。map 未初始化时值为 nil,使用函数 len() 可以获取其长度。
func main() {
scoreMap := make(map[string]int)
scoreMap["zhangsan"] = 90
scoreMap["lisi"] = 100
fmt.Println(scoreMap) // map[lisi:100 zhangsan:90]
fmt.Println(scoreMap["lisi"]) // 100
fmt.Printf("type of a:%T\n", scoreMap) // type of a:map[string]int
}
map也支持在声明的时候填充元素,例如:
func main() {
userInfo := map[string]string{
"username": "zhangsan",
"password": "123456",
}
fmt.Println(userInfo)
}
map 使用
检查是否包含某个 key
value, isExist := map[key]
- isExist 表示是否存在 不存在时为 false
- value 为key 对应的值
遍历 map
注意: 遍历map的顺序 与 添加时的顺序无关
。
func main() {
scoreMap := make(map[string]int)
scoreMap["zhangsan"] = 90
scoreMap["lisi"] = 100
scoreMap["wangwu"] = 60
for k, v := range scoreMap {
fmt.Println(k, v)
}
}
delete()函数删除键值对
delete(map, key) // map:删除键值对的map key:要删除的键