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 · 2535 次点击
    这是一个创建于 1018 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原因

    因为发现用 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  
       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   ·   实用小工具   ·   5538 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:15 · PVG 17:15 · LAX 01:15 · JFK 04:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.