Go语言中映射表map的使用
1 概述
Go语言中的键值对(key->value)集合,称之为映射map。映射map是变长类型,定义时不需要指定长度。映射map是无序的,遍历是的顺序不可期,原因是底层由hash表实现。
逻辑结构表示为:
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
}
完!
原文出自:小韩说课
微信关注:小韩说课
Go语言中映射表map的使用的更多相关文章
- Java 集合和映射表
集合 可以使用集合的三个具体类HashSet.LinkedHashSet.TreeSet来创建集合 HashSet类 负载系数 当元素个数超过了容量与负载系数的乘积,容量就会自动翻倍 HashSet类 ...
- Go语言中多字节字符的处理
1 概述 Go语言的字符串是使用 UTF-8 编码的.UTF-8 是 Unicode 的实现方式之一.本文内容包括:UTF-8 和 Unicode 的关系,Go语言提供的 unicode 包和 uni ...
- Linux下安装redis 3.0及C语言中客户端实现demo
1.获取安装文件 wget http://download.redis.io/redis-stable.tar.gz 2.解压文件 tar xzvf redis-stable.tar.gz 3.进入目 ...
- java中Array/List/Map/Object与Json互相转换详解
http://blog.csdn.net/xiaomu709421487/article/details/51456705 JSON(JavaScript Object Notation): 是一种轻 ...
- go 语言中常用的包
来自学习go语言.pdf 译者刑星 ==== fmt 包fmt实现了格式化IO函数,这与c的printf和scanf类似,格式化短语派生于c %v 默认格式的值.当打印结构时,加号(%+v)会增加字段 ...
- Java中如何遍历Map对象的4种方法
在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHa ...
- ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象
http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value (存一个对象的时候key存) 将哈希 ...
- 转!! Java中如何遍历Map对象的4种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
- 【转】Java中如何遍历Map对
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
随机推荐
- git使用教程2-更新github上代码
前面一篇已经实现首次上传代码到github了,迈出了装逼第一步,本篇继续讲如何把本地更新的代码同步更新到github上 一.clone代码 1.把大神的代码clone到本地,或者clone自己gith ...
- Mysql学习---使用Python执行存储过程
使用Python执行存储过程 使用Python执行存储过程[2部分]: 1.执行存储过程,获取存储过程的结果集 2.将返回值设置给了 @_存储过程名_序号 = #!/usr/bin/env pyt ...
- TMG 2010 使用脚本来导入URL集和域名集
作为一个网管,相信有领导叫你限制员工上网的情况,例如只限制员工访问某些网站.在禁止的网站数量少的时候,添加URL集或者域名集是一件很简单的事情,如果禁止的网站数量多达1500个呢?如果再使用ISA S ...
- 沉淀再出发:jetty的架构和本质
沉淀再出发:jetty的架构和本质 一.前言 我们在使用Tomcat的时候,总是会想到jetty,这两者的合理选用是和我们项目的类型和大小息息相关的,Tomcat属于比较重量级的容器,通过很多的容器层 ...
- 沉淀再出发:java中注解的本质和使用
沉淀再出发:java中注解的本质和使用 一.前言 以前XML是各大框架的青睐者,它以松耦合的方式完成了框架中几乎所有的配置,但是随着项目越来越庞大,XML的内容也越来越复杂,维护成本变高.于是就有人提 ...
- composer随笔
composer dump-autoload 生成autoload.php文件
- yaml 入手
一.变量 YAML使用冒号加缩进的方式代表层级(属性)关系,使用短横杠(-)代表数组元素. YAML中允许表示三种格式,分别是常量值,对象和数组 #即表示url属性值: url: http://www ...
- AngularJs学习笔记--Using $location
原版地址:http://code.angularjs.org/1.0.2/docs/guide/dev_guide.services.$location 一.What does it do? $loc ...
- BZOJ 1562 变换序列 二分图匹配+字典序
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1562 题目大意: 思路: 逆序匹配,加边匹配的时候保持字典序小的先加入. 具体证明:h ...
- BeanDefinition的创建(BeanDefinitionHolder的创建)
这个对另一篇章Bean Definition从加载.解析.处理.注册到BeanFactory的过程的扩展. Spring框架中BeanDefinition的继承结构. Spring框架中BeanDef ...