goLang map

server/2024/12/22 15:00:15/

goLang Map

是内置数据结构,无序
Go不提供set类型,但是map中key是不相同的,可以实现类似set功能

格式

map[keyType]valueType

map中键是唯一的,必须支持==和!=操作,所以 `切片、函数以及包含这些结构类型的具有引用语义的,不能作为映射的键,会造成编译错误

m := map[[] string]int{} // err,invalid map key type []string

map值可以是任意类型,没有限制。
map所有键的数据类型必须相同,值也是

map是无序的,无法决定返回顺序,所以,每次打印结果可能不同

创建

m4 := make(map[int]string, 10) // 第二个参数可以指定容量

和slice类似,map更方便一些,不用借助类似append的函数,直接赋值即可。如,m1[17] = “Nami”。
可以使用len()函数,不可以使用cap()函数

初始化

需要保证key不重复

var m1 map[int]string = map[int]string{1: "Luff", 2:"san"}
m2 := map[int]string{1: "Luff", 2:"san"}
fmt.Println(m2)

赋值

m1[1] = "Nami" // 修改
m1[3] = "Yuiki" // 追加

遍历

顺序是不确定的,每次遍历都不同

for k, v := range m1{fmt.Printlnf("%d --> %s\n", k, v)
}
for k := range m1{fmt.Printlnf("%d --> %s\n", k, v)
}

判断key是否存在

value, ok := m1[1]
fmt.Println("value = ", value, ", ok =", ok)

如果key存在,第一个返回值返回value的值。第二个返回值为 true。
如果key不存在,第一个返回值为空,第二个返回值为false

删除

使用delete()函数,指定key可以方便删除map的KV映射
delete操作是安全的,如果元素不在map中,将返回value类型对应的零值

Map做函数参数

在函数间传递映射不会制造出该映射的一个副本,不是值传递,是引用传递

func DeleteMap(m map[int[string, key int){delete(m, key)for k, v := range m{fmt.Printf("len(m)=%d, %d")}
}
func main() {m := map[int]string{1: "Luffy", 2: "san", 3: "Zoro"}DeleteMap(m, 2)for k, v := range m{fmt.Printf("len(m)=%d, %d --> %s \n", len(m), k, v)}
}

Map 做函数返回值

返回的是引用

func test() map[int]string {m1 := make(map[int]string, 1) // 容量为1的mapm1[1] = "Luffy"m1[2] = "san"m1[67] = "Zoro"return m1  
}

喜欢你,始于初见,陷于陪伴,终于白首。


http://www.ppmy.cn/server/114279.html

相关文章

拍摄自动ai白底抠图减少人工快速便捷标准化操作

欧保图(ORBITVU)作为一款自动化摄影设备,在自动抠图功能方面展现出了卓越的性能,它集成了先进的图像处理技术和自动化控制功能,极大地提升了产品拍摄和后期处理的效率。以下是对欧保图自动抠图功能的主要描述&#xff…

WebGL系列教程二(环境搭建及初始化Shader)

目录 1 前言2 新建html页面3 着色器介绍3.1 顶点着色器、片元着色器与光栅化的概念3.2 声明顶点着色器3.3 声明片元着色器 4 坐标系(右手系)介绍5 着色器初始化5.1 给一个画布canvas5.2 获取WebGL对象5.3 创建着色器对象5.4 获取着色器对象的源5.5 绑定着色器的源5.6 编译着色器…

WEB攻防-ASP安全MDB下载植入IIS短文件名写权限解析

知识点: 1、ASP环境搭建组合; 2、ASP-数据库下载&植入; 3、IIS-短文件&解析&写权限; WEB安全攻防 1、web源码; 2、开发语言; 3、中间件平台; 4、数据库类型; 5、…

线性代数 第四讲 极大线性无关组,等价向量组,向量组的秩

文章目录 1.极大线性无关组2.等价向量组2.1 等价向量组的判断 3.向量组的秩4.等价矩阵和等价向量组5. 重难点题型总结5.1 极大线性无关组的计算5.2 AB的行向量表示与AB的列向量表示 1.极大线性无关组 定义: 在一个向量组中,取部分向量组成新的向量组,这…

macOs系统基于anaconda的pycharm研发环境搭建

1. anaconda的安装 1.1 下载安装包 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 1.2 安装 此安装包是免费的,也不需要进行配置,直接无脑下一步即可 1.3 测试 进入终端命令界面输入 conda --version测试是否安装成功 弹出conda 24.5.0即…

notepad++软件介绍(含安装包)

Notepad 是一款开源的文本编辑器,主要用于编程和代码编辑。它是一个功能强大的替代品,常常被用来替代 Windows 系统自带的记事本。 Notepad win系统免费下载地址 以下是 Notepad 的一些主要特点和功能: 多语言支持:Notepad 支持多…

一个全面、先进、公平且模块化的开源RAG框架

两个关键问题限制了 RAG 的发展: 新型 RAG 算法之间缺乏全面和公平的比较。 像 LlamaIndex 和 LangChain 这样的开源工具使用了高级抽象,这导致了透明度的缺失,并限制了开****发新算法和评估指标的能力。 RAGLAB:是一个模块化的…

春日美食:基于SpringBoot的在线订餐系统

1 绪论 1.1 研究背景 随着互联网技术的快速发展,网络时代的到来,网络信息也将会改变当今社会。各行各业在日常企业经营管理等方面也在慢慢的向规范化和网络化趋势汇合[13]。电子商务必将成为未来商务的主流,因此对于餐饮行业来说,…