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的数据结构,可见,己经做好排序的实现的准备。由于这个项目目前还处理不稳定阶段,建议充足测试后再用于线上环境。