01-go基础-07-map(声明map、初始化map、map赋值、遍历map、判断key是否在map中、删除map成员)
创始人
2024-03-22 02:29:07
0

文章目录

  • 1. 声明 map
  • 2. 初始化 map
  • 3. map赋值
    • 3.1 直接声明并赋值
    • 3.2 分别定义每一组键值对
  • 4. 遍历map
  • 5. 判断key是否在map中
  • 6. 删除成员(delete())

1. 声明 map

  • 语法
var MapName map[keyType]valueType
  • 语法示例
var warlords map[string]string
  • 仅声明的map为空
package mainimport "fmt"func main() {var warlords  map[string]stringif warlords == nil {fmt.Printf("map为空")}else{fmt.Printf("map为:%+v",warlords)}
}

结果

map为空

2. 初始化 map

  • 语法
MapName := make(map[keyType]valueType)
  • 语法示例
warlords := make(map[string]string)
  • 初始化之后,map不为空
package main
import "fmt"func main() {warlords := make(map[string]string)if warlords == nil {fmt.Printf("map为空")}else{fmt.Printf("map为:%+v",warlords)}
}
  • 结果显示
map为:map[]

3. map赋值

3.1 直接声明并赋值

在函数内可以直接声明并赋值

  • 语法
mapName := map[string]string{key1:value1,key2:value2……}
  • 语法示例
var warlords  = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}
  • 完整示例
package mainimport "fmt"func main() {var warlords  = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}if warlords == nil {fmt.Printf("map为空")}else{fmt.Printf("map为:%+v",warlords)}
}

结果

map为:map[刘备:徐州 刘表:荆州 袁绍:河北 马腾:西凉]

说明:
如上可见,map是没有顺序的,打印出的结果和我们赋值的顺序并不一致。

3.2 分别定义每一组键值对

  • 语法
MapName[key1] = value1
  • 语法示例
	warlords["孙权"] = "江东"
  • 完整示例
package main
import "fmt"func main() {//warlords := make(map[string]string)var warlords  = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}warlords["孙权"] = "江东"fmt.Printf("map为:%+v",warlords)
}

语法

map为:map[刘备:徐州 刘表:荆州 孙权:江东 袁绍:河北 马腾:西凉]

4. 遍历map

  • 语法
for key,value := range MapName {……}
  • 完整示例
package mainimport "fmt"func main() {var warlords  = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}for name,territory := range warlords {fmt.Println(name,":",territory)}
}

结果

刘备 : 徐州
袁绍 : 河北
马腾 : 西凉
刘表 : 荆州

5. 判断key是否在map中

  • 语法
if value,ok := MapName[key];ok{……
}
  • 完整示例
package mainimport "fmt"func main() {//定义mapvar warlords  = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}//查询刘备的信息SearchTerritory("刘备",warlords)//查询曹操的信息SearchTerritory("曹操",warlords)
}// SearchTerritory 定义一个查询函数
func SearchTerritory(name string,warlords map[string]string)(){if territory,ok := warlords[name];ok {fmt.Printf("===========================\n%q 的信息已查到\n势力范围:%q\n",name,territory)}else{fmt.Printf("===========================\n未查到 %q 的信息",name)}
}

结果

===========================
"刘备" 的信息已查到
势力范围:"徐州"
===========================
未查到 "曹操" 的信息

6. 删除成员(delete())

  • 语法
delete(MapNam, key)
  • 语法示例

  • 4.2 示例
package mainimport "fmt"func main() {var warlords  = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}fmt.Println("原map:",warlords)delete(warlords,"刘表")fmt.Println("现map:",warlords)}

结果

原map: map[刘备:徐州 刘表:荆州 袁绍:河北 马腾:西凉]
现map: map[刘备:徐州 袁绍:河北 马腾:西凉]

在这里插入图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...