在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    基于Go 1.18+泛型、Lodash風格的Go語言庫,支持切片和map等助手

    基于Go 1.18+泛型、Lodash風格的Go語言庫,支持切片和map等助手

    samber/lo是基于Go 1.18+泛型的、Lodash風格的Go語言庫。Lodash則是一個一致性、模塊化、高性能的JavaScript實用工具庫,用于提升開發(fā)者效率,提高原生JavaScript方法的性能,在業(yè)界赫赫有名。

    lo項目開始時作為一個有新泛型實現的實驗,在某些方面可能看起來像Lodash。作者曾使用go-funk包進行編碼,但go-funk使用反射(reflection),因此不是類型安全的。

    該項目已經在GitHub上積累了6.1k的Star。

    • 項目地址:https://github.com/samber/lo
    • 開源協議:MIT License

    項目作者Samuel Berthe來自法國西部城市南特,從事產品型用戶研究。

    正如預期,基準測試表明,泛型將比基于反射包的實現快得多。并且,與純for循環(huán)相比,基準測試也顯示出類似的性能提升。

    未來,5至10個助手將與進入Go標準庫的助手重疊(在包名稱slices和maps下)。作者認為Io庫是合理的,提供了更多有價值的抽象。

    安裝

    go get github.com/samber/lo@v1

    使用

    使用如下命令導入lo:

    import ( “github.com/samber/lo” lop “github.com/samber/lo/parallel”)

    接著使用如下其中一個助手:

    names := lo.Uniq[string]([]string{“Samuel”, “Marc”, “Samuel”})// []string{“Samuel”, “Marc”}

    大多數時候,編譯器將可以推斷出類型,這樣你就能夠調用lo.Uniq([]string{…})。

    支持的各類助手(helper)

    Slices助手

    maps助手

    math助手

    strings助手

    tuples助手

    intersection助手

    具體展示

    Map

    操作一種類型的切片,并將它轉換為另一種類型的切片:

    import “github.com/samber/lo”lo.Map[int64, string]([]int64{1, 2, 3, 4}, func(x int64, _ int) string { return strconv.FormatInt(x, 10)})// []string{“1”, “2”, “3”, “4”}

    并行處理:像lo.Map()一樣。但mapper函數在協程(goroutine)中被調用,并以相同的順序返回結果。

    import lop “github.com/samber/lo/parallel”lop.Map[int64, string]([]int64{1, 2, 3, 4}, func(x int64, _ int) string { return strconv.FormatInt(x, 10)})// []string{“1”, “2”, “3”, “4”}

    Filter

    遍歷一個集合,并返回predicate函數返回true的所有元素的一個數組。

    even := lo.Filter[int]([]int{1, 2, 3, 4}, func(x int, _ int) bool { return x%2 == 0})// []int{2, 4}

    Contains

    如果一個元素出現在集合中,則返回true。

    present := lo.Contains[int]([]int{0, 1, 2, 3, 4, 5}, 5)// true

    更多其他細節(jié)內容請參閱原項目。

    鄭重聲明:本文內容及圖片均整理自互聯網,不代表本站立場,版權歸原作者所有,如有侵權請聯系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年6月16日 06:04
    下一篇 2022年6月16日 06:04

    相關推薦

    聯系我們

    聯系郵箱:admin#wlmqw.com
    工作時間:周一至周五,10:30-18:30,節(jié)假日休息