• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go映射(map)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

map 是 key - value 类型的数据结构,本身是无序的

初始化

map 声明之后必须要初始化才能使用
初始化方法:

make

通过 make 可以分配内存空间,如果省略 size 的话,分配的空间会较少,当内存超出范围时会内存再分配
示例:

func main() {
	foo := make(map[string]string, 10)
	foo["key1"]= "value1"
	fmt.Printf("%v", foo)
}

直接初始化

声明时直接写入值

func newMap() {
	foo := map[string]string{
		"key1": "value1",
		"key2": "value2",
	}
	foo["key3"] = "value3"
	fmt.Printf("%v", foo)
}

多层 map

在使用多层 map 时,每一层 map 都要先初始化才能使用

直接初始化

直接初始化示例:

func twoMap(){
	foo := map[string]map[string]string{
		"outer_key1": {
			"inner_key1": "value1",
			"inner_key2": "value2",
		},
		"outer_key2": {
			"inner_key1": "value1",
		},
	}
	fmt.Printf("%v", foo)
}

没有初始化的内层 map 如果要使用还需要通过 make 的方式进行初始化

通过 make 初始化

make 初始化示例:

func twoMakeMap() {
	foo := make(map[string]map[string]string, 10)
	foo["outer_key1"] = make(map[string]string)
	foo["outer_key1"]["inner_key1"] = "value1"
	foo["outer_key1"]["inner_key2"] = "value2"
	foo["outer_key2"] = make(map[string]string)
	foo["outer_key2"]["inner_key1"] = "value1"
	fmt.Printf("%v", foo)
}

操作

插入 & 更新

在已经分配内存的前提下,更新时如果不存在相应 key 就会自动插入

func main() {
	foo := map[string]string{
		"key1": "value1",
	}
	foo["key1"] = "new_value1"
	foo["key2"] = "value2"
	fmt.Printf("%v", foo)
}

查找

map[key] 会返回两个值:取到的值和是否取到值,如果没有取到值会返回相应值的空值

func find() {
	foo := map[string]string {
		"key1": "value1",
	}
	key := "key1"
	value, get := foo[key]
	if get {
		fmt.Printf("%v", value)
	} else {
		fmt.Printf("cannot find key: %v\nvalue is '%v', type is %T", key, value, value)
	}
}

遍历

func main() {
	foo := map[string]string {
		"key1": "value1",
		"key2": "value2",
	}
	for k, v := range foo {
		fmt.Printf("key: %v,\nvalue: %v\n\n", k, v)
	}
}

delete

func delete(m map[Type]Type1, key Type)

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go-micro transport 通信发布时间:2022-07-10
下一篇:
Go基础之类型转换发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap