写了一个 Go 的集合库(处理 Slice/Map/Array 数据),基于 Go 1.18 泛型 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
yazi
V2EX    分享创造

写了一个 Go 的集合库(处理 Slice/Map/Array 数据),基于 Go 1.18 泛型

  •  2
     
  •   yazi
    sxyazi 2022-02-10 22:17:08 +08:00 2981 次点击
    这是一个创建于 1353 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原因

    因为发现用 Go 处理业务数据不太方便,经常要写很多重复的循环,所以就写了一个集合库,正好 Go 1.18 快出来了。

    项目

    API 和示例代码都写在了 README 里,有英文和中文两种语言。

    项目地址: https://github.com/sxyazi/go-collection

    提示

    • 由于 Go 1.18 还没发布正式版,语言特性可能在发布后有所变化,因此本库目前仅作为试用,并且会跟随官方变化。

    • 在试用时,需要使用 gotip 获取最新 master 分支的 Go ,因为 Go 1.18 Beta 2 仍有一些 Bug 。

    • 有任何疑问或建议,欢迎创建 issue ,我会持续完善它 :(

    10 条回复    2022-02-18 16:22:53 +08:00
    whoisix
        1
    whoisix  
       2022-02-10 23:20:21 +08:00 via Android
    qfdk
        2
    qfdk  
    PRO
       2022-02-11 00:15:40 +08:00 via iPhone
    感谢 但是 看到说明表示不敢用
    yazi
        3
    yazi  
    OP
       2022-02-11 00:24:33 +08:00
    @qfdk 目前是预览版本,不建议(也不应该)投入生产环境。在 Go 1.18 正式版发布后,该包也会发布正式版本。谢谢支持
    fgwmlhdkkkw
        4
    fgwmlhdkkkw  
       2022-02-11 09:30:47 +08:00
    你好,问一下`[T ~[]E, E any]`里面的`~`是什么意思呀?
    fgwmlhdkkkw
        5
    fgwmlhdkkkw  
       2022-02-11 09:31:56 +08:00
    yazi
        6
    yazi  
    OP
       2022-02-11 14:41:59 +08:00
    @fgwmlhdkkkw 抱歉刚看到,先前我对这也有一些疑惑,以下为我的理解(部分转述官方回复):

    `[]E` 是非 interface 类型,因此不是一个适当的约束条件(参考 https://github.com/golang/exp/blob/master/constraints/constraints.go ,这里面的约束都是 interface 。在 beta2 时,这些约束被内置在了 Go 里,因此可以直接 `import "constraints"`;在目前 master ,这些约束又被抽离到了 `golang/exp` package )

    因此如果想让他成为约束,需要这么写:`[T interface{ []E }, E any]`。但当 `E` 包含 `~` 或 `|` 时,它也被认为是一个 interface 约束。
    fgwmlhdkkkw
        7
    fgwmlhdkkkw  
       2022-02-11 15:30:16 +08:00
    @yazi 额,,我还是等正式发布吧……
    fgwmlhdkkkw
        8
    fgwmlhdkkkw  
       2022-02-14 10:14:17 +08:00
    yazi
        9
    yazi  
    OP
       2022-02-14 19:27:23 +08:00
    @fgwmlhdkkkw 不错的文章,谢谢分享
    sanxiaozhizi
        10
    sanxiaozhizi  
       2022-02-18 16:22:53 +08:00
    tql
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2454 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 20ms UTC 05:14 PVG 13:14 LAX 22:14 JFK 01:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86