MagicArray基本使用方法
MagicArray致力于让研发不再卷,这个灵感来源于php语言,可能多少年以后,php可能不会有太多人记得。但是在一个年代里,如果论坛里里常见最火爆的帖子无疑是:php是世界上最好的编程语言。由此可见php是一个多么招人爱,也招人恨的存在。
php中的不足在于其并发能力不足,编译检查不足等问题,招人爱的优势在于, php的世界里不像java、go等语言哪么卷,他的设计宗旨是让一切变的简单。而MagicArray正式借鉴了php中的array设计实现。
引用包
go get github.com/lingdor/magicarray
1、创建MagicArray
type uinfo struct {
UID int
UserName string
}
//结构转MagicArray
var userArr = arr.ValueofStruct(uinfo{
UID: 1,
UserName: "linda",
})
//数组切片转MagicArray
var usersArr = arr.ValueOfSlice([]uinfo{
{
UID: 1,
UserName: "tom",
},
{
UID: 2,
UserName: "ley",
},
})
//map 转MagicArray
var mapArr, _ = arr.Valueof(map[string]any{
"UID": 1,
"UserName": "linda",
})
2、合并对象
userArr,_ = arr.Merge(userArr,mapArr,usersArr)
// 其中,userArr必须是MagicArray对象,后面的mapArr和userArr最好是MagicArray,否则会带来额外的微小的反射性能
3、比较
if err := Equals(strs, names); err != nil {
t.Error(err)
}
4、二维表处理
usersArr = arr.WashColumn(usersArr, arr.WashTagRuleJsonInitialLower())
if bs, err := json.Marshal(usersArr); err == nil {
fmt.Println(string(bs))
} else {
panic(err)
} usersArr = arr.Column(usersArr, "UserName")
if bs, err := json.Marshal(usersArr); err == nil {
fmt.Println(string(bs))
} else {
panic(err)
}
5、json处理
if bs, err := json.Marshal(userArr); err == nil {
fmt.Println(string(bs))
} else {
panic(err)
}
总结:目前MagicArray还处于非稳定阶段,对于差集、并集、排序还没有支持,但是底层己经支持有序key的数据结构,可见,己经做好排序的实现的准备。由于这个项目目前还处理不稳定阶段,建议充足测试后再用于线上环境。
MagicArray基本使用方法的更多相关文章
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- mapreduce多文件输出的两方法
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
- 【.net 深呼吸】细说CodeDom(6):方法参数
本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...
- IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法
直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- ArcGIS 10.0紧凑型切片读写方法
首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...
- [BOT] 一种android中实现“圆角矩形”的方法
内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...
- JS 判断数据类型的三种方法
说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...
- .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法
.NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...
随机推荐
- Web组态可视化软件之BY组态可视化平台介绍
Web组态可视化软件之BY组态可视化平台介绍 关于组态软件,首先要从组态的概念开始说起. 什么是组态 组态(Configure)的概念来自于20世纪70年代中期出现的第一代集散控制系统(Distrib ...
- 关于使用uniapp时Android 离线打包的注意事项
Android 离线打包 文档地址: https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android 注意事项: 添加权限,需要将 uniapp ...
- 用Rust手把手编写一个Proxy(代理), 动工
用Rust手把手编写一个Proxy(代理), 动工 项目 ++wmproxy++ gitee 传送门 github 传送门 设计流程图 flowchart LR A[客户端] -->|Http| ...
- Solution Set -「ARC 109」
「ARC 109A」Hands Link. 讨论即可,除了煞笔出题人写了个死马的题面. #include<cstdio> #include<algorithm> using n ...
- socket应用的例子
当使用 C 语言实现 Socket 编程时,可以通过系统提供的网络库来实现网络通信.以下是一个简单的示例,演示了如何创建一个简单的服务器和客户端,实现客户端向服务器发送消息并接收回复的功能. 服务器端 ...
- MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-1
一个5.7版本的MySQL单点数据库,版本信息是: Server version: 5.7.31-log MySQL Community Server (GPL) 数据量已达到760G,日常存在性能问 ...
- gitlab ci 集成 eslint/prettier/tsc 做代码审查,并使用 eslint 输出作为显示代码质量
前言 想自动化一下公司里代码的部分审查,最初想用 reviewdog 的,但是公司的域名基本都在 VPN 中访问的,gitlab ci 的容器中是访问不到的,于是乎实验了 gitlab 代码质量功能. ...
- AI图形算法的应用之一:仪表识别
目前AI智能算法如火如荼,各大型厂商对此趋之若鹜般加大开发力度,比如大华.海康这些视频处理类,以及百度.腾讯这些IT软件厂商,因为业务开展需要,我也把研发方向转向于此,小有成绩,在此展示一下. 最近研 ...
- GPL协议原文及中文翻译
GPL协议原文及中文翻译 原文参考链接 翻译参考链接 原文 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 19 ...
- 14. 从零开始编写一个类nginx工具, HTTP文件服务器的实现过程及参数
wmproxy wmproxy将用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,后续将实现websocket代理, 内外网穿透等, 会将实现过程分享出来, 感 ...