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

2022 年 2 月 10 日
 yazi

原因

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

项目

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

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

提示

3894 次点击
所在节点    分享创造
10 条回复
whoisix
2022 年 2 月 10 日
👍🏻
qfdk
2022 年 2 月 11 日
感谢 但是 看到说明表示不敢用
yazi
2022 年 2 月 11 日
@qfdk 目前是预览版本,不建议(也不应该)投入生产环境。在 Go 1.18 正式版发布后,该包也会发布正式版本。谢谢支持
fgwmlhdkkkw
2022 年 2 月 11 日
你好,问一下`[T ~[]E, E any]`里面的`~`是什么意思呀?
fgwmlhdkkkw
2022 年 2 月 11 日
yazi
2022 年 2 月 11 日
@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 年 2 月 11 日
@yazi 额,,我还是等正式发布吧……
fgwmlhdkkkw
2022 年 2 月 14 日
yazi
2022 年 2 月 14 日
@fgwmlhdkkkw 不错的文章,谢谢分享
sanxiaozhizi
2022 年 2 月 18 日
tql

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

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

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

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

© 2021 V2EX