Go语言中映射表map的使用

hanzkering · · 3153 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

## 1 概述 Go语言中的键值对(key->value)集合,称之为映射map。映射map是变长类型,定义时不需要指定长度。映射map是无序的,遍历是的顺序不可期,原因是底层由hash表实现。 逻辑结构表示为: ![map示意](http://www.hellokang.net/images/posts/go/go-map.png) ## 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 } // 也可以赋值到一个新的map变量中,得到一个仅仅包含两个元素的键值对调的map。 ``` 完! 原文出自:[小韩说课](http://www.hellokang.net/go/go-map/) 微信关注:小韩说课 ![小韩说课](http://www.hellokang.net/images/wechat_subscription.jpg)

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

3153 次点击  
加入收藏 微博
3 回复  |  直到 2018-11-02 14:13:49
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传