第十章 go语言map集合

Go 语言Map(集合)

Map 是一种无序的键值对的集合。

Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。

Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,遍历 Map 时返回的键值对的顺序是不确定的。

在获取 Map 的值时,如果键不存在,返回该类型的零值,例如 int 类型的零值是 0,string 类型的零值是 ""。

Map 是引用类型,如果将一个 Map 传递给一个函数或赋值给另一个变量,它们都指向同一个底层数据结构,因此对 Map 的修改会影响到所有引用它的变量。

定义 Map

可以使用内建函数 make 或使用 map 关键字来定义 Map:

/* 使用 make 函数 */
map_variable := make(map[KeyType]ValueType, initialCapacity)

  其中 KeyType 是键的类型,ValueType 是值的类型,initialCapacity 是可选的参数,用于指定 Map 的初始容量。Map 的容量是指 Map 中可以保存的键值对的数量,当 Map 中的键值对数量达到容量时,Map 会自动扩容。如果不指定 initialCapacity,Go 语言会根据实际情况选择一个合适的值。

示例:

 //1创建一个空的map
var m=make(map[string]int)

  

//2创建一个初始容量10的map
var m1=make(map[string]int,10)

  

//2使用字面量创建map
	 var m2 = map[string]int {
		"apple":1,
		"ban":2,
		"or":3,
	}

  操作map元素

//1获取元素
	var  res= m2["apple"]
	fmt.Println(res)
	//2如果键不存在,ok 的值为 false,v2 的值为该类型的零值
	var v2, ok = m2["pear"]  
	fmt.Println(v2,ok)
	//3获取map的长度
	var le=len(m2)
	fmt.Println(le)
	//4 遍历map
	for k,v  := range m2{
		fmt.Println(k,v)
	}

	//5删除键值对
	delete(m2,"apple")
	//6再次遍历
	for k,v  := range m2{
		fmt.Println(k,v)
	}

  

posted @ 2023-07-14 13:39  郎小乐  阅读(45)  评论(0)    收藏  举报