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

Posted Locutus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 字典map: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])
	}
}

以上是关于go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 字典map:map键值对的增删改查的主要内容,如果未能解决你的问题,请参考以下文章

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 数组:一维数组

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 切片:切片内部结构

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 数组:向函数传递数组

go语言学习笔记 — 基础 — 高级数据类型 — 派生类型:指针(pointer)数据容器函数(func)结构体(struct)通道(channel)

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 切片:数组 vs. 切⽚

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 切片:切片的初始化声明