一、Map集合介绍
1.1 什么是Map集合?
- map集合是一种无序的键值对的集合
- map是通过key来快速检索数据,key类似于索引,指向数据的值
- 在获取 Map 的值时,如果键不存在,返回该类型的零值,例如 int 类型的零值是 0,string 类型的零值是 ""
- Map 是引用类型,如果将一个 Map 传递给一个函数或赋值给另一个变量,它们都指向同一个底层数据结构,因此对 Map 的修改会影响到所有引用它的变量
Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。
1.2 Map集合语法
mapVariable := make(map[KeyType]ValueType, initialCapacity)
- KeyType 是键的类型
- ValueType 是值的类型
- initialCapacity 是可选的参数,用于指定 Map 的初始容量
二、Map基本操作
2.1 定义Map
package main
import "fmt"
func main() {
// 定义一个空Map
siteMap := make(map[string]string)
fmt.Println(siteMap)
}
或者可以使用下面方法定义并初始化:
package main
import "fmt"
func main() {
siteMap := map[string]int{
"zhangsan": 1,
"lisi": 2,
"wangwu": 3,
}
fmt.Println(siteMap)
}
2.2 获取Map
package main
import "fmt"
func main() {
siteMap := map[string]int{
"zhangsan": 1666,
"lisi": 2666,
"wangwu": 3,
}
v1 := siteMap["zhangsan"] //将zhangsan键的值付给v1变量
v2, ok := siteMap["lisi"] //将lisi键值付给v1,ok两个变量
fmt.Println(v1)
fmt.Println(v2, ok)
}
代码输出内容:
1666
2666 true
2.3 修改Map元素
package main
import "fmt"
func main() {
siteMap := map[string]int{
"zhangsan": 1666,
"lisi": 2666,
"wangwu": 3,
}
siteMap["lisi"] = 666666 // 修改元素
fmt.Println(siteMap["lisi"])
}
代码输出内容:
666666
2.4 删除Map元素
package main
import "fmt"
func main() {
siteMap := map[string]int{
"zhangsan": 1666,
"lisi": 2666,
"wangwu": 3,
}
delete(siteMap, "zhangsan") // 删除元素
fmt.Println(siteMap)
}
代码输出内容:
map[lisi:2666 wangwu:3]
2.5 遍历Map
package main
import "fmt"
func main() {
siteMap := map[string]int{
"zhangsan": 1666,
"lisi": 2666,
"wangwu": 3,
}
for i, v := range siteMap {
fmt.Printf("键:%v\t\t值:%v\n", i, v)
}
}
代码输出内容:
键:zhangsan 值:1666
键:lisi 值:2666
键:wangwu 值:3