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都 ...
随机推荐
- Spring学习---Spring中利用jackson进行JSON转换
Spring中利用jackson进行JSON转换 import java.util.List; import com.fasterxml.jackson.core.JsonProcessingExce ...
- 使用Visual Studio Code开发Arduino
首发于MSPrecious成长荟 https://zhuanlan.zhihu.com/p/30868224 使用Visual Studio Code开发Arduino 1.下载安装 VS Code ...
- MySQL 触发器-更新字段时,status列会加一
需求:当更新列中的字段时,列中的status字段,就会+1 表结构 CREATE TABLE `test_1` ( `id` int(11) DEFAULT NULL, `name` varchar( ...
- problem during schema drop, statement alter table ACT_RU_VARIABLE
将activiti的databaseSchemaUpdate设置为drop-create抛出DbSqlSession 错误 发布于2015-02-14 16:03:57 浏览7851次 Excepti ...
- langularJs的MVC模式
1.数据的挂载 在函数中设置数据 function Aaa($scope){ $scope.name = 'hello'; $scope.age = '20'; } 2.ng-controller 这 ...
- python中的BaseManager通信(二)文件二分
提供服务部分(运行时在接收端未打开前不能关闭) #mainsec.py from multiprocessing import Process, Queue from multiprocessing. ...
- python中的BaseManager通信(一)文件三分
可以在windows下单机运行 主部分(提供服务器) #mainfirst.py from multiprocessing.managers import BaseManager import Que ...
- 编程算法 - 数字在排序数组中出现的次数 代码(C)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/36869869 数字在排序数组中出现的次数 代 ...
- git回滚线上代码
由于之前自己推代码的时候操作失误,push代码的时候没有push到线上的dev分支,而是push到了线上master分支(主要是因为没有在命令后写分支名,直接推到默认master分支上了),覆 ...
- programming-languages学习笔记--第7部分
programming-languages学习笔记–第7部分 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src ...