MagicArray基本使用方法

阿旭^_^發表於2023-12-27

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的資料結構,可見,己經做好排序的實現的準備。由於這個專案目前還處理不穩定階段,建議充足測試後再用於線上環境。

相關文章