go map
map是key-value形式 它的key只能是基本数据类型 声明 定义并创建 // 定义map var m map[string]string // 创建空间 m = make(map[st
go map
发布时间:2023-10-06 (2023-10-06)

map是key-value形式

它的key只能是基本数据类型

声明

定义并创建

// 定义map
var m map[string]string
// 创建空间
m = make(map[string]string, 2) // size可以不写,默认为1

m["name"] = "张三"
m["age"] = "21"
m["addr"] = "湖南长沙"

fmt.Println(m)

简写

m2 := map[string]string{
  "name": "张三",
  "age": "12",
}

增加

通过map[key] = xxx

查找

通过双赋值检测某个key是否存在

v, ok := m2["name"]
if ok {
   // 如果存在,ok就为true
   fmt.Printf("v = %v", v)
}else{
   fmt.Printf("v不存在")
}

删除

delete(map, key) // 删除单个元素

// 删除所有的key-value
// 重新make

遍历

map只有len,没有cap

len一个map,得到的就是key的个数

只有for range一种遍历方式

for key, value := range m{
  fmt.Printf("key=%v,value=%v\n", key, value)
}

切片中的元素为map类型

var mapSlice = make([]map[string]string, 3)
for index, value := range mapSlice {
    fmt.Printf("index:%d value:%v\n", index, value)
}
fmt.Println("初始化元素:")
// 对切片中的map元素进行初始化
mapSlice[0] = make(map[string]string)
mapSlice[0]["name"] = "小明"
mapSlice[0]["gender"] = "男"
mapSlice[0]["address"] = "长沙"
for index, value := range mapSlice {
    fmt.Printf("index:%d value:%v\n", index, value)
}

map中的值为切片类型

m := make(map[string][]string)
fmt.Println(m)
val := []string{"北京", "上海"}
m["中国"] = val
fmt.Println(m)
m["中国"] = append(m["中国"], "广州", "深圳")
fmt.Println(m)