目录
一、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
三、案例
3.1 案例一
package main
import (
"fmt"
)
func main() {
cities := make(map[string]string)
// 新增key
cities["no1"] = "北京"
cities["no2"] = "上海"
cities["no3"] = "深圳"
// 修改key,因为这个存在,索引是修改
cities["no3"] = "邯郸"
// 删除key
delete(cities, "no2")
fmt.Println(cities)
// 删除所有key 直接make一个新地址
cities = make(map[string]string)
fmt.Println(cities)
}
代码输出内容:
map[no1:北京 no3:邯郸]
map[]
3.2 案例二
package main
import "fmt"
func main() {
siteMap := make(map[string]string)
siteMap["A"] = "石家庄"
siteMap["B"] = "唐山"
siteMap["C"] = "秦皇岛"
siteMap["D"] = "邯郸"
for site := range siteMap {
fmt.Printf("车牌 %v 城市是: %v\n", site, siteMap[site])
}
name, ok := siteMap["D"]
if ok {
fmt.Println("D对应城市是:", name)
} else {
fmt.Println("D 没有定义!")
}
}
代码输出内容:
车牌 C 城市是: 秦皇岛
车牌 D 城市是: 邯郸
车牌 A 城市是: 石家庄
车牌 B 城市是: 唐山
D对应城市是: 邯郸
标签:Map,string,map,fmt,详解,Go,main,siteMap
From: https://www.cnblogs.com/qinziteng/p/17273254.html