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