博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP转Go系列:map映射
阅读量:6408 次
发布时间:2019-06-23

本文共 2199 字,大约阅读时间需要 7 分钟。

映射的定义

初识映射会很懵,因为在PHP中没有映射类型的定义。其实没那么复杂,任何复杂的类型在PHP中都可以用数组表示,映射也不例外。

$array['name'] = '平也';$array['sex'] = '1';$array['age'] = '10';//outputArray(    [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);}//outputArray(    [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);//outputArray(    [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);//outputArray()复制代码

然而,在Go中也没有提供清空map的函数,重新make一个map就行了,原来的map会被Go的垃圾回收机制清除掉,甚至比写一个清空的函数效率还高。以上是PHP与Go在map映射方面的区别于联系,如果感兴趣可以自行了解尝试。

转载于:https://juejin.im/post/5d033750f265da1b5f265205

你可能感兴趣的文章
MySQL安装详解(V5.5 For Windows)
查看>>
Android单例模式
查看>>
Log4php 使用心得
查看>>
十三香_百度百科
查看>>
paip.网页右键复制菜单限制解除解决方案
查看>>
string.Format 格式化时间,货币
查看>>
Kerberos和NTLM - SQL Server
查看>>
记github上搭建独立域名的免费博客的方法过程
查看>>
Web设计之网页布局CSS技巧
查看>>
iOS key value coding kvc在接收json数据与 model封装中的使用
查看>>
Android 滑动效果入门篇(二)—— Gallery
查看>>
Revit二次开发示例:DesignOptions
查看>>
Entity Framework 系统约定配置
查看>>
优秀设计:纹理在网页设计中的20个应用示例
查看>>
C++ 关键字 explicit, export, mutable
查看>>
生成指定范围的一组随机数并求平均值
查看>>
android语音识别方法
查看>>
File Operations in Android NDK(转)
查看>>
如何将kux格式的视频转换成我们常用的MP4格式
查看>>
[sublime系列文章] sublime text 3插件配置说明
查看>>