golang
  • Introduction
  • 环境安装
    • vscode
    • liteide
  • 第一个Go程序
  • Go项目结构
  • Go语言命令
  • 变量
  • 数据类型
    • array
    • slice
    • map
    • struct
    • interface
    • string
    • channel
    • 类型转换
  • 循环语句
  • HTTP编程
  • init函数
Powered by GitBook
On this page
  • 简介
  • 声明语义
  • 初始化方法
  • 赋值
  • 遍历
  • 其他操作

Was this helpful?

  1. 数据类型

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
PrevioussliceNextstruct

Last updated 5 years ago

Was this helpful?