主要观点:考虑引入 sync/v2 包,当前 sync 包中的 sync.Map 和 sync.Pool 类型存在非编译时类型安全和效率低的问题,可通过将其改为泛型类型来解决,引入 sync/v2 包可方便从当前包过渡到新包。
关键信息:
- math/rand/v2 包已成功,现考虑 sync/v2 包。
- 当前 sync 包的 Map 和 Pool 类型在 Go 支持泛型前设计,使用 any 不安全且效率低。
- 可在现有 sync 包中添加新的泛型类型,但会留下混淆的问题,引入 sync/v2 包可避免。
- sync/v2 包中的类型和函数与当前 sync 包部分相同,如 OnceFunc 等。
- 当前 sync 包的 Map 类型将被新类型取代,增加 All 方法等,考虑添加 Keys 和 Values 方法。
- 当前 sync 包的 Pool 类型将被新类型取代,2025 - 01 - 04 新 Pool 版本无导出 New 字段,使用 NewPool 创建,Get 方法返回两个结果。
重要细节: - 兼容性问题导致不能直接在当前 sync 包中将 Map 和 Pool 改为泛型。
- 引入 sync/v2 包后未来用户需导入 "sync/v2"而非 "sync",可由 goimports 等工具处理。
- 新的 Map 类型的各种方法功能及参数类型,如 Load、Store 等。
- 新的 Pool 类型的 NewPool 方法创建方式及 Put、Get 方法功能等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。