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