golang基础教程(九)、map_golang map教程(1),Golang开发三年月薪才12K

29 阅读3分钟
  • key 可以是什么类型

golang 中的 map,的 key 可以是很多种类型,比如 bool, 数字,string, 指针, channel , 还可以是只
包含前面几个类型的 接口, 结构体, 数组
通常 key 为 int 、string
注意: slice, map 还有 function 不可以,因为这几个没法用 == 来判断

  • valuetype 可以是什么类型

valuetype 的类型和 key 基本一样,这里我就不再赘述了
通常为: 数字(整数,浮点数),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",
	}



![img](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/9bc7188bb94640498aa871b8e41622d7~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1770647678&x-signature=hgJEV7%2B9qq95Qfk1XjqdK2uhSow%3D)
![img](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/fa43bfa53eca4938aaa1b00ed2e98129~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1770647678&x-signature=uhVVICMomNyeHGMYe7otWdRW2Cg%3D)
![img](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/48e8c3b8e9be4337b74b45a55cbbe411~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1770647678&x-signature=3XciV345MUDhfI6r65Dt6TmWH20%3D)

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

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

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