Map的使用

Posted 旧时星空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Map的使用相关的知识,希望对你有一定的参考价值。

Map

Map的创建及初始化

方式一:var 变量名=map[数据类型(key)]数据类型(value)

方式二:var 变量名=make(map[数据类型(key)]数据类型(value))

方式三:var 变量名=map[数据类型(key)]数据类型(value){ key**😗*value, …}

var map1 map[int]string//没有初始化,nil类似于null
var map2=make(map[int]string)//创建
var map3=map[string]int{"Go":98,"python":93}
Map的添加和修改

Map的长度不是固定的,所以当Map中不存在value对应的key那么就会添加新的键值对,如果已存在value对应的key就会修改已存在key对应的value值。

[数据类型(key)]数据类型(value)

key存在,修改数据

key不存在,添加数据

var map1=make(map[int]string)
map1[1]="hello"
map1[2]="python"
map1[3]="java"
map1[4]="go"
fmt.Println(map1)
//map[1:hello 2:python 3:java 4:go]
//修改
map1[3]="C++"
fmt.Println(map1)
//map[1:hello 2:python 3:C++ 4:go]
Map的获取

map[key]–>value

value,ok:=map[key]

根据key获取对应的value

若key存在,value就是对应的数据,ok为true

若key不存在,value就是对应值类型的默认值,ok为false

fmt.Println(map1[3])
//C++
fmt.Println(map1[40])
//"",Map中无key=40的键值对,所以输出value默认的string的空值
v1,ok:=map1[40]
if ok{
    fmt.Priintln("对应的数值是",v1)
}else{
    fmt.Println("操作的key不存在,获取到的是零值:",v1)
}//操作的key不存在,获取到的是零值: 
Map的删除

delete(map,key)

如果key存在,就可以直接删除

如果key不存在,删除失败

delete(map1,3)
fmt.Println(map1)
//map[1:hello 2:python 4:go]
获取Map的长度

fmt.Println(len(map1))

//3

Map的遍历
for k,v:=range map1{
    fmt.Println(k,v)
}
//1 hello
//2 python
//4 go      Map无序,每次循环的结果不相同
  • 获取所有的key,–>切片、数组
  • 进行排序
  • 遍历key,—>map[key]
keys:=make([]int,0,len(map1))
fmt.Println(keys)//[]切片
for k,_:=range map1{
    keys=append(keys,k)
}
fmt.Println(keys)//[1 2 4]
//冒泡排序
sort.Ints(keys)
for_,key:=range keys{
    fmt.Println(key,map1[key])
}
//1 hello
//2 python
//4 go     

以上是关于Map的使用的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 代码片段

android google map supportmap片段无法在片段中初始化

48个值得掌握的JavaScript代码片段(上)

在 ViewPager 片段中使用 Google Map V2 崩溃?

Amazon Elastic Map Reduce:输入片段大小是不是重要

10个JavaScript代码片段,使你更加容易前端开发。