继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Go语言中映射表map的使用

holdtom
关注TA
已关注
手记 1703
粉丝 240
获赞 991


1 概述

Go语言中的键值对(key->value)集合,称之为映射map。映射map是变长类型,定义时不需要指定长度。映射map是无序的,遍历是的顺序不可期,原因是底层由hash表实现。

逻辑结构表示为:

map示意

2 创建语法

var m = map[key_type]value_type{key1: value1, key2: value2}

var m = make(map[key_type]value_type)

// 示例,字符串型下标,字符串型值:

var m = make(map[string]string) //make()会分配内存空间,初始化。

m["east"] = "东"

m["west"] = "西"

// 直接初始化

var m = map[string]string{"east": "东", "west": "西"}

3 []下标操作

与数组类型,使用下标完成映射元素的访问。

var m = map[string]string{"east": "东", "west": "西"}

fmt.Println(m["east"]) 

// 东

fmt.Println(m["west"]) 

// 西

4 for-range

for k, v := range mapVar {

    fmt.Println(k, v)

}

遍历的顺序不可期。

5 映射是引用类型

切片为引用类型,因此切片的默认初始值为nil。

同时复制时为引用传递,修改会相互影响。

6 检测元素是否存在

通过key获取元素时,使用第二个变量,可以接收到当前key是否存在的布尔值。

var m = map[string]string{"east": "东", "west": "西"}

value, exists := m["south"]

// value: 东, exists: true

value, exists := m["south"]

// value: , exists: false

7 delete 删除元素

delete(map, key),删除 map 中,指定的 key。如果 key 不存在,该操作不会产生错误。

var m = map[string]string{"east": "东", "west": "西"}

delete(m, "west")

fmt.Println(m)

// map[east:东]

8 键值对调

如果 map 的值类型可以作为 key 且所有的 value 是唯一的,那么通过下面的方法可以做到键值对调:

var m = map[string]string{"east": "东", "west": "西"}

for k, v := range m {

  m[v] = k

}

完!

原文出自:小韩说课

微信关注:小韩说课

小韩说课

©著作权归作者所有:来自51CTO博客作者小韩说课的原创作品,如需转载,请注明出处,否则将追究法律责任


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP