MagicArray致力于让研发不再卷,这个灵感来源于php语言,可能多少年以后,php可能不会有太多人记得。但是在一个年代里,如果论坛里里常见最火爆的帖子无疑是:php是世界上最好的编程语言。由此可见php是一个多么招人爱,也招人恨的存在。
php中的不足在于其并发能力不足,编译检查不足等问题,招人爱的优势在于, php的世界里不像java、go等语言哪么卷,他的设计宗旨是让一切变的简单。而MagicArray正式借鉴了php中的array设计实现。
引用包
go get github.com/lingdor/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", })
userArr,_ = arr.Merge(userArr,mapArr,usersArr) // 其中,userArr必须是MagicArray对象,后面的mapArr和userArr最好是MagicArray,否则会带来额外的微小的反射性能
if err := Equals(strs, names); err != nil { t.Error(err) }
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) }
if bs, err := json.Marshal(userArr); err == nil { fmt.Println(string(bs)) } else { panic(err) }
总结:目前MagicArray还处于非稳定阶段,对于差集、并集、排序还没有支持,但是底层己经支持有序key的数据结构,可见,己经做好排序的实现的准备。由于这个项目目前还处理不稳定阶段,建议充足测试后再用于线上环境。