golang基础教程(九)、map_golang map教程

var map 变量名 map[keytype]valuetype

  • 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",
	}

	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)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值