Golang 1.23: 新的 unique 包
上周,Go 1.23 进入冻结期,这意味着不会添加任何新功能,并且任何已添加的功能不太可能被删除。这是一个预览即将发生的变化的好机会。
这篇文章,我们来介绍引入的新包 unique
This article is first published in the medium MPP plan. If you are a medium user, please follow me in medium. Thank you very much.
根据wikipedia的描述,interning 是按需重复使用具有同等值对象的技术,减少创建新对象的动作。这种创建模式经常用于不同编程语言中的数和字符串,可以避免不必要的对象重复分配的开销。
unique 参考了go4.org/intern ,将它移动到了 官方库,并且做了相应的修改。 issue #62483
就像官方描述的一样 unique 这个包提供了一种轻量化(unique 仅仅八个字节)的比较两个变量是否相等的实现。比如下面这段代码
性能提升还是很明显的
但是 你不应该把他当作一个全局变量来用,存储共享数据,unique 的底层实现其实是一个 map,查询的成本也是很高的。
比如
正是因为这样,关于 unique 的讨论其实还在继续,可能是因为用到的地方不是很多?不管怎么样, 这个新的包进入标准库已经是事实了。 net/netip
已经用 unique 重构了它,用来比对 IP 地址的详细信息。
版权声明: 本文为 InfoQ 作者【huizhou92】的原创文章。
原文链接:【http://xie.infoq.cn/article/c7ed4da6dfd40c1883bb5e4b4】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论