golang基础教程(九)、map_golang map教程,2024必看-Golang高级面试题总结

29 阅读3分钟

通常为: 数字(整数,浮点数),string,map,struct

示例

var a map[string]string
var a map[string]int
var a map[int]string
var a map[string]map[string]string

注意:声明是不会分配内存的,初始化需要 make ,分配内存后才能赋值和使用。

2、分配空间

使用make函数为map分配内存空间
在这里插入图片描述

func main() {
	var m = make(map[int]interface{},1)
	m[1]="A"
	m[2]="B"
	fmt.Printf("m地址:%p;m的值:%v",m,m)
}

m地址:0xc00005c150;m的值:map[1:A 2:B]

三、map 的使用

1、方式 1

见前面的例子

2、方式 2

不指定长度

func main() {
	var m = make(map[int]interface{})
	m[1]="A"
	m[2]="B"
	fmt.Printf("m地址:%p;m的值:%v",m,m)
}

m地址:0xc00005c150;m的值:map[1:A 2:B]

3、方式 3

直接声明并赋值,注意最后要加上,

func main() {
	var m = map[int]interface{}{
		1:"A",
		2:"B",
	}
	fmt.Printf("m地址:%p;m的值:%v",m,m)
}

m地址:0xc000070150;m的值:map[2:B 1:A]

四、map 操作

1、map 增加和更新:

map[“key”] = value //如果 key 还没有,就是增加,如果 key 存在就是修改。

2、map 删除:

delete(map,“key”) ,delete 是一个内置函数,如果 key 存在,就删除该 key-value,如果 key 不存在,
不操作,但是也不会报错
在这里插入图片描述
如果我们要删除 map 的所有 key ,没有一个专门的方法一次删除,可以遍历一下 key, 逐个删除
或者 map = make(…),make 一个新的,让原来的成为垃圾,被 gc 回收

3、map 查找
value := m[key]

如果 m这个 map 中存在 key , 那么 返回 对应的value,否则返回 对应value类型的默认值

4、map 遍历

map 的遍历使用 for-range 的结构遍历

综合示例

func main() {
	var m = map[int]interface{}{
		1:"A",
		2:"B",
	}

	fmt.Printf("m地址:%p;m的值:%v\n",m,m)
	//添加
	m[3]="C"
	fmt.Printf("m地址:%p;m的值:%v\n",m,m)
	//更新
	m[2]= "H"
	//删除
	delete(m,3)
	//遍历
	for key,value:= range m{
		fmt.Printf("key:%v ; value:%v\n",key,value)
	}
	fmt.Printf("m地址:%p;m的值:%v\n",m,m)
}

m地址:0xc00005c150;m的值:map[1:A 2:B]


![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/76be4304ae7f4495b6834215e3477968~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1773066886&x-signature=5BrhOHFM6QPj5KmF%2BUxpqhJUv2g%3D)
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/fe8c055a2d8648449355cb2a339fc0ea~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1773066886&x-signature=ITzMu236kSB5YbtqZysfBDsAtnM%3D)
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/996f2dfa4b2e4ba5be0cce7de6039aed~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1773066886&x-signature=2AUgGrRnWh5M0vPxnnJ6cFp3OFQ%3D)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://gitee.com/vip204888)**