Go(05)map介绍
原文地址:
http://www.limerence2017.com/2019/06/11/golang06/
基本用法
map同样也是引用类型,map在使用前需要通过make进行初始化,否则会报panic错误。
map 初始化和插入
1
|
type PersonInfo struct {
|
可以看到map使用前用make先构造初始化,之后进行了插入,如果key存在,则修改value
map 查找
1
|
//从这个map查找键为"1234"
|
查找指定key,返回值为value和bool类型结果,所以先判断bool类型值是否为true
map 进阶
map可以直接显示初始化不需要make构造。
1
|
var data map[string]int = map[string]int{"bob": 18, "luce": 28}
|
map是引用类型,函数通过修改形参,达到修改外部实参的功能
1
|
func modify(data map[string]int, key string, value int) {
|
map 大小可以通过len函数获得,如果不采用显示初始化方式,只声明map,在使用前一定要make初始化
map遍历采用range方式,且map是无序的,切记。
1
|
//map大小
|
上面的代码遍历map,打印结果为
1
|
key: bob value: 178
|
可以实现一个函数,将map中的key存到slice中,然后排序,之后根据排好顺序的slice遍历
得到的就是排序后的结果
1
|
func sortprintmap(data map[string]int) {
|
在main函数调用sortprintmap(data2),结果如下
1
|
key is Arean value is 33
|
二维map
二维map操作和之前类似,只是声明时value还是一个map
1
|
//二维map
|
二维map同样遵循使用前先make初始化原则,并且在二层map要使用前仍然需要make
1
|
//使用前需要初始化
|
二维map遍历
1
|
//二维map 遍历
|
slice 中存储map
1
|
//slice of map
|
本着golang所有引用类型,如chan,map,slice,interface,使用前都需要make初始化。
上面代码先初始化slicem,然后再遍历slice,为每个元素初始化map类型
map 反转
1
|
//map 反转
|
其实就是构造一个和原map 的key value相反的map,然后为该map初始化并且插入元素。
上述所有源码下载地址
源码下载地址
谢谢关注我的公众号
重剑无锋,大巧不工