6. go 集合map

map(集合)

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

Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。

需要注意的是 map 作为函数参数传递是 是地址传递,函数内更改 map 会影响实参的值

除了slice,map,function的内建类型都可以作为key, Struct类型不包含上次字段,也可以作为key

定义 Map

使用 map 关键字 或者 make 函数

map 如果不初始化,那么就会创建一个 nil mapnil map 不能用来存放键值对

/* 声明变量,默认 map 是 nil */
var map_variable map[key_data_type]value_data_type

/* 使用 make 函数 */
map_variable := make(map[key_data_type]value_data_type)

遍历map

使用 range 遍历 key ,或者遍历 key、value 键值对,不保证遍历顺序,如需顺序,需手动对key排序。

var mMap  map[string]string = map[string]string {
	"a" : "this is a",
	"b" : "this is b",
}

var k, v string
for k, v = range mMap {
	fmt.Printf(k, v)
	fmt.Println("")
}

判断 map 中是否存在指定 key

用value,ok:=m[key]来判断是否存在key

if v, ok :=mMap["a"]; ok {
	fmt.Printf(v, ok)
} else {
	fmt.Printf("ok is not exist")
}

delete() 函数

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

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 ])
	}
}

// 输出结果为
/*
原始地图
India 首都是 New delhi
France 首都是 Paris
Italy 首都是 Rome
Japan 首都是 Tokyo
法国条目被删除
删除元素后地图
Italy 首都是 Rome
Japan 首都是 Tokyo
India 首都是 New delhi
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值