map

  • 简介

  • 声明语义

  • 初始化方法

  • 赋值

  • 遍历

  • 其他操作

简介

map最常见的实现有tree-map与hash-map。在golang中map是一个内置类型,实现方法为hash-map

声明语义

var mymap map[string]string

如上的代码声明了一个map,map会被初始化为零值nil。注意:nil-map不能进行插入元素等操作。

初始化方法

  • make函数

map1 := make(map[string]string)
map2 := make(map[string]string, 5)    // 存储空间为5
  • key-value对

map1 := map[string]string{"1": "one", "2": "two"}
  • 使用其他map初始化

map1 := map[string]string{"1": "one", "2": "two"}
map2 := map1

值得注意的是,上面的代码中使用map1初始化map2时,修改map2也会导致map1的改变(包含了增删改等操作),也就是说,map1和map2完全是同一个对象。

赋值

map1 := map[string]string{"1": "one", "2": "two"}
var map2 map[string]string
map2 = map1

注意,上面的将map1赋值给map2后,修改map2也会导致map1的改变,也就是说,map1和map2完全是同一个对象。

遍历

使用for循环来遍历map

map1 := map[string]string{"1": "one", "2":"two"}
for key, value := range map1 {
    fmt.Println(key, value)
}

其他操作

  • 添加元素

如果key不存在,则使用中括号的赋值操作,可以直接添加元素到map中

map1 := map[string]string{"1": "one", "2":"two"}
map1["3"] = "three"    // 添加元素
map1["1"] = "One"    // 修改元素
  • 删除元素

使用delete函数,可以删除map中的元素

map1 := map[string]string{"1": "one", "2":"two"}
delete(map1, "1")
  • key是否存在

map1 := map[string]string{"1": "one", "2":"two"}
value, exists := map1["1"]
if exists {
    fmt.Println(value)
} else {
    fmt.Println("key does not exist")
}
  • key的集合

keys := reflect.ValueOf(abc).MapKeys()    // slice

Last updated

Was this helpful?