PHP转Go系列:map映射
映射的定义
初识映射会很懵,因为在PHP中没有映射类型的定义。其实没那么复杂,任何复杂的类型在PHP中都可以用数组表示,映射也不例外。
$array['name'] = '平也';
$array['sex'] = '1';
$array['age'] = '10';
//output
Array
(
[name] => 平也
[sex] => 1
[age] => 10
)
映射其实就是有key有value的数组,在Go中的赋值也很类似,但需要提前声明该映射类型的键与值的类型,确保所有的键和值的赋值类型统一,否则会报错。
array := make(map[string]string)
array["name"] = "平也"
array["sex"] = "1"
array["age"] = "10"
fmt.Print(array) //output map[age:10 name:平也 sex:1]
在PHP中还有一种初始化数组的方法,就是将所有要存储的键与值赋值给变量。
$array = [
'name' => '平也',
'sex' => '1',
'age' => '10'
];
在Go中也有类似的初始化方法,但切记统一键与值的数据类型。
array := map[string]string{
"name": "平也",
"sex": "1",
"age": "10",
}
映射的遍历
在PHP中其实就是遍历数组的操作,foreach即可。
$array = [
'name' => '平也',
'sex' => '1',
'age' => '10'
];
foreach ($array as $key => $value) {
print_r($array);
}
//output
Array
(
[name] => 平也
[sex] => 1
[age] => 10
)
Array
(
[name] => 平也
[sex] => 1
[age] => 10
)
Array
(
[name] => 平也
[sex] => 1
[age] => 10
)
在Go中也可以像遍历数组那样遍历map,依然使用range关键字。
array := map[string]string{
"name": "平也",
"sex": "1",
"age": "10",
}
for v, k := range array {
fmt.Print(k, v)
}
上篇文章讲到遍历时可以通过下划线来忽略键或值,如果只遍历键,下划线也可以省略。
array := map[string]string{
"name": "平也",
"sex": "1",
"age": "10",
}
for k := range array {
fmt.Print(k)
}
//output sexagename
映射的取值
PHP中可以直接通过读数组的key来取值。
$array = ['name' => 'pingye'];
echo $array['name']; //output pingye
在Go中的操作是一样的,与PHP不同的是,如果取了不存在的key,Go中默认输出空值,在PHP中就会产生warning警告。
array := map[string]string{
"name": "pingye",
"sex": "1",
"age": "10",
}
fmt.Print(array["name"]) //pingye
映射元素的删除
在PHP中的unset可以删除任何你想删除的数组元素,非常好用。
$array = [
'name' => '平也',
'sex' => '1',
'age' => '10'
];
unset($array['name']);
print_r($array);
//output
Array
(
[sex] => 1
[age] => 10
)
在Go中通过delete函数来删除map中的元素。
array := map[string]string{
"name": "pingye",
"sex": "1",
"age": "10",
}
delete(array, "name")
fmt.Print(array) //output map[age:10 sex:1]
清空map元素
在PHP中好像从来没有注意过是否把数组清空,很抱歉,我能想到的清空数组方法就是把空数组赋值给它。
$array = [
'name' => '平也',
'sex' => '1',
'age' => '10'
];
$array = [];
print_r($array);
//output
Array
(
)
然而,在Go中也没有提供清空map的函数,重新make一个map就行了,原来的map会被Go的垃圾回收机制清除掉,甚至比写一个清空的函数效率还高。以上是PHP与Go在map映射方面的区别于联系,如果感兴趣可以自行了解尝试。
PHP转Go系列:map映射的更多相关文章
- Reactor系列(五)map映射
#java# #reactor# #flux# #map# #映射# 视频解视: https://www.bilibili.com/video/av79179444/ FluxMonoTestCase ...
- ZOJ 3644 Kitty's Game dfs,记忆化搜索,map映射 难度:2
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4834 从点1出发,假设现在在i,点数为sta,则下一步的点数必然不能是sta的 ...
- POJ2503——Babelfish(map映射+string字符串)
Babelfish DescriptionYou have just moved from Waterloo to a big city. The people here speak an incom ...
- map——映射(message.cpp)
信息交换 (message.cpp) [题目描述] Byteland战火又起,农夫John派他的奶牛潜入敌国获取情报信息. Cow历尽千辛万苦终于将敌国的编码规则总结如下: 1 编码是由大写字母组成的 ...
- filter过滤器与map映射
filter过滤器 >>> list(filter(None,[0,1,2,True,False])) [1, 2, True] filter的作用就是后面的数据按照前面的表达式运算 ...
- map映射
采集于:https://blog.csdn.net/luanpeng825485697/article/details/78056312 映射map: var map = new Map(); //映 ...
- Java精选笔记_集合【Map(映射)接口】
Map(映射)接口 简介 该集合存储键值对,一对一对的往里存,并且键是唯一的.要保证map集合中键的唯一性. 从Map集合中访问元素时,只要指定了Key,就能找到对应的Value. 关键字是以后用于检 ...
- UVA12096 - The SetStack Computer(set + map映射)
UVA12096 - The SetStack Computer(set + map映射) 题目链接 题目大意:有五个动作: push : 把一个空集合{}放到栈顶. dup : 把栈顶的集合取出来, ...
- scala 数据结构(八 ):-map映射操作
在Scala中可以通过map映射操作来解决: 将集合中的每一个元素通过指定功能(函数)映射(转换)成新的结果集合这里其实就是所谓的将函数作为参数传递给另外一个函数,这是函数式编程的特点 以HashSe ...
随机推荐
- css position:sticky的尝试
前言 sticky这种设计效果是经常出现的,比如陶宝右侧的工具栏,当我们向下滚动到它的位置时,它就会黏住顶部跟随滚动,类似position: fixed的效果,只不过它的触发条件是当我们滚动到所在位置 ...
- ES6-Proxy,代理
proxy 代理 Es6 增强 对象和函数(方法) Proxy用于修改某些操作的默认行为,即对编程语言层面进行修改,属于“元编程”, Proxy意思为“代理”,即在访问对象之前建立一道“拦截”,任 ...
- Visual Studio 开发(三):Visual Studio 使用时常见问题解决方案
一.Error LNK2019: 无法解析的外部符号 此问题应该是Visual Studio的初学者最常碰到的问题,也是相对来说很让人头疼的问题. 注:Error LNK2019 问题在VC 6.0 ...
- iOS字符串处理_替换(去掉空格换行)、截取
以下代码主要实现了:1.截取"@@"前的字符串: 2.去掉字符串中的"##": 3.去掉字符串中的空格和换行. 希望相互学习相互指正. -----ViewC ...
- linux 磁盘分区和挂载看这一篇就够了
Linux fdisk 和 mount 命令操作指南,linux磁盘管理.新增磁盘.挂载新硬盘(linux运维入门) 首先列出文件系统的整体磁盘空间使用情况.可以用来查看磁盘已被使用多少空间和还剩余多 ...
- Web项目配置https
在java安装目录下bin目录下keytool工具 keytool -genkey -storetype PKCS12 -keysize 2048 -alias tomcat -keyalg RSA ...
- PHP危险函数
部分内容转载 https://www.jianshu.com/p/277294c1a9f8 https://www.cnblogs.com/yewooo00/p/7551083.html 信息泄露 1 ...
- SpringBoot条件注解的总结
https://blog.csdn.net/qq_31142553/article/details/86439950
- ycsb 测试Hbase性能
下载 github:https://github.com/brianfrankcooper/YCSB/releases/tag/0.10.0 wget https://github.com/brian ...
- IDEA乱码Tomcat控制台乱码输出乱码报文乱码
电脑重装系统后,重新安装了最新版的IDEA 2019.2.2,出现乱码.百度了很多,慢慢的解决了乱码的问题,现记录如下.方法因人而异,不同的问题不一样的方法. 第一 修改IDEA文件编码格式 设置id ...