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

2022-02-10 22:17:08 +08:00
 yazi

原因

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

项目

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

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

提示

2562 次点击
所在节点    分享创造
10 条回复
whoisix
2022-02-10 23:20:21 +08:00
👍🏻
qfdk
2022-02-11 00:15:40 +08:00
感谢 但是 看到说明表示不敢用
yazi
2022-02-11 00:24:33 +08:00
@qfdk 目前是预览版本,不建议(也不应该)投入生产环境。在 Go 1.18 正式版发布后,该包也会发布正式版本。谢谢支持
fgwmlhdkkkw
2022-02-11 09:30:47 +08:00
你好,问一下`[T ~[]E, E any]`里面的`~`是什么意思呀?
fgwmlhdkkkw
2022-02-11 09:31:56 +08:00
yazi
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
2022-02-11 15:30:16 +08:00
@yazi 额,,我还是等正式发布吧……
fgwmlhdkkkw
2022-02-14 10:14:17 +08:00
yazi
2022-02-14 19:27:23 +08:00
@fgwmlhdkkkw 不错的文章,谢谢分享
sanxiaozhizi
2022-02-18 16:22:53 +08:00
tql

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/833062

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX