一.语法基础
Go语言中 map
的定义语法如下:
map[KeyType]ValueType
1.KeyType:表示键的类型
2.ValueType:表示键对应的值的类型。
map类型的变量默认初始值为nil,需要使用make()函数来分配内存:
make(map[KeyType]ValueType, [cap])
二.基本的使用
声明后添加元素:
func main() {
scoreMap := make(map[string]int, 8)
scoreMap["A"] = 50
scoreMap["B"] = 100
var a = scoreMap["A"] //可以给变量赋值
fmt.Println(a)
fmt.Println(scoreMap)
fmt.Println(scoreMap["A"])
fmt.Printf("type of a:%T\n", scoreMap)
}
/*结果:
50
map[A:50 B:100]
50
type of a:map[string]int
*/
声明时添加元素(这里写到外部):
var deploy = map[string]int{
"A": 10,
"B": 20,
}
func main() {
a := deploy["B"]
fmt.Println(a)
fmt.Println(deploy)
}
三.判断某个键是否存在(查)
基本格式:
value, ok := map[key]
例子:
var deploy = map[string]int{
"A": 10,
"B": 20,
"C": 30,
}
func main() {
v, ok := deploy["A"]//判断A是否存在
if ok {
fmt.Println(v)
} else {
fmt.Println("没有这个键") //10
}
a := deploy["B"]
fmt.Println(a) //20
fmt.Println(deploy) //map[A:10 B:20]
}
四.遍历map
var deploy = map[string]int{
"A": 10,
"B": 20,
"C": 20,
}
func main() {
deploy["D"] = 40
for s, i := range deploy {
fmt.Println(s, i)
}
}
当只想遍历键或者值的时候
只遍历键:
for s:= range deploy {
fmt.Println(s)
}
只遍历值:
for _, i := range deploy {
fmt.Println(i)
}
五.删除键值对
基本语法
delete(map, key)
map:表示要删除键值对的map
key:表示要删除的键值对的键
示例
func main(){
scoreMap := make(map[string]int)
scoreMap["张三"] = 90
scoreMap["小明"] = 100
scoreMap["王五"] = 60
delete(scoreMap, "小明")//将小明:100从map中删除
for k,v := range scoreMap{
fmt.Println(k, v)
}
}
六.总结
//直接创建初始化一个map
var mapInit = map[string]string {"xiaoli":"湖南", "xiaoliu":"天津"}
//声明一个map类型变量,
//map的key的类型是string,value的类型是string
var mapTemp map[string]string
//使用make函数初始化这个变量,并指定大小(也可以不指定)
mapTemp = make(map[string]string,10)
//存储key ,value
mapTemp["xiaoming"] = "北京"
mapTemp["xiaowang"]= "河北"
//根据key获取value,
//如果key存在,则ok是true,否则是flase
//v1用来接收key对应的value,当ok是false时,v1是nil
v1,ok := mapTemp["xiaoming"]
fmt.Println(ok,v1)
//当key=xiaowang存在时打印value
if v2,ok := mapTemp["xiaowang"]; ok{
fmt.Println(v2)
}
//遍历map,打印key和value
for k,v := range mapTemp{
fmt.Println(k,v)
}
//删除map中的key
delete(mapTemp,"xiaoming")
//获取map的大小
l := len(mapTemp)
fmt.Println(l)