Map的使用
package main
import "fmt"
func main() {
/*
map:映射,是一种专门用于存储键值对的集合,属于引用类型
存储的特点:
A:存储的是无序的键值对
B:键不能重复,并且和value值一一对应。
map中key不能重复,如果重复,那么新的value会覆盖原来的,程序不会报错.
语法结构:
1.创建map
var map1 map[key类型]value类型
nil map,无法直接使用
var map2 = make(map[key类型]value类型)
var map3 = map[key类型]value类型{key:value,key:value,key:value...}
2.添加/修改
map[key]=value
如果key存在,就可以修改数据
如果key不存在,就是添加数据
3.获取
map[key]-->value
value,ok :=map[key]
根据key获取对应的value
如果key存在,value就是对应的数据,ok为true
如果key不存在,value就是值类型的默认值,ok为false
4.删除数据:
delete(map,key)
如果key存在,就可以直接删除
如果key不存在,删除失败
5.长度:
len()
每种数据类型:
int:0
float:0.0-->0
string:""
array:[00000]
sliece:nil
map:nil
*/
//1.创建map
var map1 map[int]string
var map2 = make(map[int]string)
var map3 = map[string]int{"Go":98,"Python":87,"Java":79,"Heml":93}
fmt.Println(map1)
fmt.Println(map2)
fmt.Println(map3)
fmt.Println(map1 == nil)
fmt.Println(map2 == nil)
fmt.Println(map3 == nil)
//map1[1] ="hello" //panic: assignment to entry in nil map
//2.nil map
if map1 == nil{
map1 = make(map[int]string)
fmt.Println(map1 == nil)
}
//3.存储键值对到map中
//map1[key] = value
map1[1] ="hello"
map1[2] ="world"
map1[3] ="ruby"
map1[4] =""
//4.获取数据,根据key获取对应的value值
//根据key获取对应的value,如果key存在,获取数值,如果key不存在,获取的是value值类型的零值
fmt.Println(map1)
fmt.Println(map1[3])//根据key为3,获取对应的value值
fmt.Println(map1[33])//""
//判断key/value是否存在
v1,ok := map1[33]
if ok{
fmt.Println("对应的数值是:",v1)
}else{
fmt.Println("操作的key不存在,获取到的是零值:",v1)
}
//5.修改数据
fmt.Println(map1)
map1[2] = "虚空"
fmt.Println(map1)
//6.删除数据
delete(map1,3)
fmt.Println(map1)
//删除不存在的键
delete(map1,33)
fmt.Println(map1)
//7.长度
fmt.Println(len(map1))
}
运行输出:
map[]
map[]
map[Go:98 Heml:93 Java:79 Python:87]
true
false
false
false
map[1:hello 2:world 3:ruby 4:]
ruby
操作的key不存在,获取到的是零值:
map[1:hello 2:world 3:ruby 4:]
map[1:hello 2:虚空 3:ruby 4:]
map[1:hello 2:虚空 4:]
map[1:hello 2:虚空 4:]
3
Process finished with exit code 0
读完点个赞,给我的坚持更新注入新的活力。
2022.05.21日更 73/365 天
公众号:3天时间
往期同类文章:
GO学习 深拷贝和浅拷贝
GO学习 数组上创建切片
GO学习 slice
GO学习 多维数组
GO学习 Array类型和排序
GO学习 Array