golang基础小记(10)——map

map

基本概念

  • 语法:map[keyType]valueType
  • 用于存储键值对(key-value),键具有唯一性
  • 内部的键值对之间是无序的,和存入的顺序无关
  • 引用类型,声明后值为nil,此时无法添加键值对,需要先使用make()来分配内存(使用方式见基础小记(9)
  • 获取长度,即键值对个数:len(map)
  • 切片的元素类型可以是map,如[]map[string]string。此时要注意每个元素都需要用make()初始化
  • map的值可以是切片,如map[string][]string

添加键值对

声明时填充

m1 := map[string]int{
		"年龄": 25,
		"身高": 130,
	}
fmt.Println(m1["年龄"]) // 25

如果输出时选择的键不存在,则输出对应类型的零值。

直接添加

向上例的m1添加键值对:

m1["体重"] = 300
m1["身高"] = 150
fmt.Println(m1) // map[体重:300 年龄:25 身高:150]

可以看到,如果key在原map中不存在,就添加新的键值对;如果已存在,就改变对应的value

判断键是否存在

语法格式:value, ok := map[key]

  • value:如果键存在则返回对应值,否则返回对应类型的零值
  • ok:如果键存在则返回true,否则返回false

接上例:

v1, k1 := m1["身高"]
v2, k2 := m1["爱好"]
fmt.Println(v1, k1, v2, k2) // 150 true 0 false

遍历

语法格式:for k, v := range map {}
其中kv是键和值。示例请参考基础小记(4)代码中的第67行。
遍历过程是无序的,如果想要有序的遍历,可以将键保存在切片中,通过有序的遍历切片来遍历map。

删除键值对

语法格式:delete(map, key)
接上例:

fmt.Println(m1) // map[体重:300 年龄:25 身高:150]
delete(m1, "身高")
fmt.Println(m1) // map[体重:300 年龄:25]
delete(m1, "爱好")
fmt.Println(m1) // map[体重:300 年龄:25]

如果指定的键是nil或者不存在,delete不做任何操作,所以不会报错。
参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值