- 前言
- 1.Map 定义
- 2.Map的基本使用
- 2 判断某个键是否存在
- 3. map遍历
- 4. delete()函数删除键值对
- 5. 元素为map类型的切片
map是一中无序的基于key-value的数据结构,Go语言中感的map是引用类型,必须初始化才能使用
1.Map 定义KeyType:键的类型
ValueType:值的类型
map[KeyType] ValueType
1. map类型的默认值为nil,它需要用make()函数来分配其内存。
2. cap表示map的容量,这个参数不是必须的,但是应该在初始化map的时候就为其指定一个合适的容量
make(map[KeyType]ValueType, [cap])
2.Map的基本使用
func main(){
ageMap := make(map[string]int, 10)
ageMap["张三"] = 19
ageMap["李四"] = 21
fmt.Println(ageMap) // ap[张三:19 李四:21]
fmt.Println(ageMap["小明"]) // 21
fmt.Printf("type of a:%T\n", ageMap) // type of a:map[string]int
// 还可以在声明的时候填充元素
age2Map := map[string]int{
"小红":19,
"大红":16,
}
fmt.Println(userInfo) // map[大红:16 小红:19]
}
2 判断某个键是否存在
写法: value, ok := map[key]
如果key存在,ok就为true,value对应的值为key对应的值;不存在ok为false,value为值类型的零值
func main(){
ageMap := make(map[string]int, 5)
ageMap["张三"] = 19
ageMap["李四"] = 21
v, ok := ageMap["张三"]
if ok {
fmt.Println(v)
} else {
fmt.Println("查无此人")
}
}
3. map遍历
使用for k, v := range map {}
遍历
ergodicMap := make(map[string]int)
ergodicMap["张三"] = 16
ergodicMap["小明"] = 42
ergodicMap["王五"] = 22
// 遍历 ergodicMap 的key,value
for k, v := range ergodicMap {
fmt.Println(k,v)
}
// 遍历 ergodicMap 的 key
for k := range ergodicMap {
fmt.Println(k)
}
4. delete()函数删除键值对
写法:delete(map, key)
, 删除指定 map 中的键 key
deleteMap := map[string]int{
"小明": 11,
"中明": 100,
"大明": 32,
"小红": 12,
"中红": 100,
"大红": 38,
}
for k,v := range deleteMap{
fmt.Println(k, ":", v)
}
输出:
小明:11
中明:100
大明:32
小红:12
中红:100
大红:38
delete(deleteMap, "中明")
delete(deleteMap, "中红")
for k,v := range deleteMap{
fmt.Println(k,":", v)
}
输出:
大红:38
小明:11
大明:32
小红:12
5. 元素为map类型的切片
var mapSlice = make([]map[string]string, 3)
for index, value := range mapSlice {
fmt.Printf("index:%d value:%v\n", index, value)
}
输出:
index:0 value:map[]
index:1 value:map[]
index:2 value:map[]
// 初始化map中的元素
// 注意这里初始化map的时候 key和value的类型应和创建切片map时候定义的类型一致
mapSlice[0] = make(map[string]string,10)
mapSlice[0]["name"] = "杨XX"
mapSlice[0]["sex"] = "男"
mapSlice[0]["address"] = "家里蹲大学"
mapSlice[1] = make(map[string]string,10)
mapSlice[1]["name"] = "王XX"
mapSlice[1]["sex"] = "女"
mapSlice[1]["address"] = "家里蹲大学"
for index, value := range mapSlice {
fmt.Printf("index:%d value:%v\n", index, value)
}
输出:
index:0 value:map[address:家里蹲大学 name:杨xx sex:男]
index:1 value:map[address:家里蹲大学 name:王xx sex:女]
index:2 value:map[]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)