集合map

64 阅读1分钟
  • map是无序的,key-value键值对的集合。通过 key 来快速检索数据,key 类似于索引,指向数据的值
  • map引用类型。如果将一个map传递给一个函数或赋值给另一个变量,它们都指向同一个底层数据结构,因此对map的修改会影响到所有引用它的变量

一、定义

1. 使用内建函数make

map名 := make(map[key类型]value类型 可选参数),可选参数一般用于指定map的初始容量

// 创建一个空的 Map
m := make(map[string]int)

// 创建一个初始容量为 10 的 Map
m := make(map[string]int, 10)

2. 使用map关键字

// 使用字面量创建 Map
m := map[string]int{
    "key1": 1,
    "key2": 2,
    "key3": 3,
}

二、操作

前提:必须对map进行初始化。因为它是引用类型,默认为nil,找不到地址就没有内存空间进行存值或删除操作,会直接触发运行时 panic

1. 取值

  • 键值对
// 获取键值对
v1 := m["key1"]
v2, ok := m["gogogo"]  // 如果键不存在,ok 的值为 false,v2 的值为该类型的零值
  • for range遍历
// 遍历 Map
for k, v := range m {
    fmt.Printf("key=%s, value=%d\n", k, v)
}

2. 删除

可以使用go内置的delete函数delete 函数只能逐个删除单个键值对

// 删除键值对
delete(m, "key2")