Go语言Map(集合)

Map 是一种无序的键值对的集合,最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。

定义Map

使用内建函数make或使用map关键字来定义。

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

  • KeyType :键的类型
  • ValueType :值的类型
  • initialCapacity :可选的参数,用于指定 Map 的初始容量(Map 中可以保存的键值对的数量)。如果不指定 initialCapacity,Go 语言会根据实际情况选择一个合适的值

 例:

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

// 创建一个初始容量为 10 的 Map
m := make(map[string]int, 10)

也可以使用字面量创建map

// 使用字面量创建 Map
m := map[string]int{
"apple": 1,
"banana": 2,
"orange": 3,
}

获取元素:

package main

import "fmt"

func main() {
	// 使用字面量创建 Map
	m := map[string]int{
		"apple":  1,
		"banana": 2,
		"orange": 3,
	}
	// 获取键值对
	v1, ok1 := m["apple"]
	v2, ok := m["pear"] // 如果键不存在,ok 的值为 false,v2 的值为该类型的零值
	fmt.Println(v1, ok1)
	fmt.Println(v2, ok)
}

v1,v2用来存储键值对的value,ok用来存储是否存在这样一个键值对

结果展示:

1 true
0 false

一些常见操作:

// 修改键值对
m["apple"] = 5

// 获取 Map 的长度
len := len(m)

// 遍历 Map
for k, v := range m {
    fmt.Printf("key=%s, value=%d\n", k, v)
}

// 删除键值对
delete(m, "banana")

示例:

package main

import "fmt"

func main() {
	var siteMap map[string]string /*创建集合 */
	siteMap = make(map[string]string)

	/* map 插入 key - value 对,书籍类型对应的书籍 */
	siteMap["纪传体史书"] = "史记"
	siteMap["小说-演绎"] = "三国演义"
	siteMap["小说-爱情"] = "半生缘"
	siteMap["科幻"] = "三体"

	/*使用键输出地图值 */
	for key := range siteMap {                //key只是一个名字,可以替换成其他名字,输出的是key值
		fmt.Println(key, "---------", siteMap[key])
	}

	/*查看元素在集合中是否存在 */
	name, ok := siteMap["戏剧"] /*如果确定是真实的,则存在,否则不存在 */

	if ok {
		fmt.Println("戏剧 的 站点是", name)
	} else {
		fmt.Println("戏剧 站点不存在")
	}
}

结果展示:

纪传体史书 --------- 史记
小说-演绎 --------- 三国演义
小说-爱情 --------- 半生缘
科幻 --------- 三体
戏剧 站点不存在

delete函数

删除map中的元素

package main

import "fmt"

func main() {
	/* 创建map */
	countryCapitalMap := map[string]string{"France": "Paris", "Italy": "Rome", "Japan": "Tokyo", "India": "New delhi"}

	fmt.Println("原始地图")

	/* 打印地图 */
	for country := range countryCapitalMap {
		fmt.Println(country, "首都是", countryCapitalMap[country])
	}

	/*删除元素*/
	delete(countryCapitalMap, "France")
	fmt.Println("法国条目被删除")

	fmt.Println("删除元素后地图")

	/*打印地图*/
	for country := range countryCapitalMap {
		fmt.Println(country, "首都是", countryCapitalMap[country])
	}
}

结果展示:

原始地图
France 首都是 Paris
Italy 首都是 Rome
Japan 首都是 Tokyo
India 首都是 New delhi
法国条目被删除
删除元素后地图
Italy 首都是 Rome
Japan 首都是 Tokyo
India 首都是 New delhi

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值