go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 字典map(2):map键值对的增删改查

1. 插入元素(增)

map插入key:value键值对

scene := map[string]int{"one":1, "two":2, "three":3}

scene["four"] = 4 
countryCapitalMap := make(map[string]string)

// map插入key - value对,各个国家对应的首都
countryCapitalMap["France"] = "Paris"
countryCapitalMap["Italy"] = "罗马"
countryCapitalMap["Japan"] = "东京"
countryCapitalMap["India"] = "新德里"

2. 使用delete函数,从map中删除键值对(删)

delete函数用于删除集合map中的元素,参数为map和其对应的key。

delete(map, key)

3. 修改某个键的值

language4 := make(map[string]map[string]string)

// 修改字典language4的go元素键id的值。注意这里是修改,不要理解成是追加元素
language4["go"]["id"] = "3"    

4. 访问map中key对应的value,key:value(查)

func TestMapVisit(t *testing.T){                                     

    scene := make(map[string]int)
    t.Log(scene)

	  scene["route"] = 66
	  scene["brazil"] = 4
	  scene["china"] = 960
	  t.Log(scene)
  
  
	  t.Log(scene["route"])   // 查找map中对应key的值

	  v := scene["route2"] 
	  t.Log(v)

	  v, ok := scene["route"] 
	  t.Log(ok)               // 若key存在,则ok为true
	
	  // 使用for range,迭代map,遍历键值对
	  for k, v := range scene {
	      t.Log(k, v)
	  }
	  
	  for _, v := range scene {
	      t.Log(v)
	  }
	  
	  for k := range scene {
	      t.Log(k)
	  }
}
  • 查找map中对应key的值
  • 查找map中一个不存在的key route2,会返回map中定义value_data_type的零值
  • 在获取value值的基础上,多取一个变量ok,判断map中是否存在key route
  • 使用for range,迭代map,遍历键值对

map是无序的,不能期望for range遍历map时,返回某种顺序的结果。但如果需要某种特定顺序的遍历结果,正确的做法是排序:

func TestMapSort(t *testing.T) {
	scene := make(map[string]int)
	t.Log(scene)

	// 准备map数据
	scene["route"] = 66
	scene["brazil"] = 4
	scene["china"] = 960
	t.Log(scene)

	// 声明一个切片,用于缓冲和排序map元素
	var sceneList []string

	// 把map键k遍历,并复制到切片中
	for k := range scene {
		sceneList = append(sceneList, k)
	}

	// 对切片中的字符串元素进行排序
	sort.Strings(sceneList)
	t.Log(sceneList) // 输出排序后的map键

	for _, k := range sceneList {
		t.Log(scene[k])
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值