Go Map的使用

Go Map的使用,第1张

文章标题
  • 前言
  • 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[]

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/788324.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存