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 ...
随机推荐
- 前端小白webpack学习(四)
.less文件与.scss文件使用与.css文件相仿 less-loader使用需要借助less插件,终端输入npm i less less-loader -D安装; sass-loader使用需要借 ...
- 检测一个App是不是有UWP血统
Win + Shift + Enter
- docker-compose 部署 Vue+SpringBoot 前后端分离项目
一.前言 本文将通过docker-compose来部署前端Vue项目到Nginx中,和运行后端SpringBoot项目 服务器基本环境: CentOS7.3 Dokcer MySQL 二.docker ...
- Flask request和response
Response # -*- coding: utf-8 -*- from flask import Flask, redirect, render_template, jsonify, ...
- js知识点面试题
网上看到的一个题,在这里存一下 此为题目function Foo() { getName = function () { alert (1); }; return this; } Foo.getNam ...
- 表单生成器(Form Builder)之伪造表单数据番外篇——指定范围随机时间
为了伪造一些尽量真实的假数据,也真是够费劲的.上一篇笔记记录了一下获取一个随机车辆牌照,这篇笔记记录一下怎么获取一个随机时间.这篇就不说那么多废话了,直接上代码 // 获取指定范围的随机数 var g ...
- Flutter中高级培训
Flutter中高级培训 一.简介 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面.Flutter可以与现有的代码一起工作.本课程全面介绍Flutter ...
- Linux查看文件或文件夹大小du命令
du命令用于显示目录或文件的大小. du会显示指定的目录或文件所占用的磁盘空间. 语法: du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--bl ...
- .net Core 使用AutoMapper
在我们的项目中慢慢的要把数据库的实体模型和视图模型进行分离,防止被人拿到我们表字段.在学校的时候自己只是有将很多数据库模型,写成一个视图模型返回到前台. 首先我们把这两个包引入项目中去. 然后我们创建 ...
- (转)Python- sklearn之最小二乘法
最小二乘法:https://baike.baidu.com/item/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95/2522346?fr=aladdin ...