想象一下,你的服务需要处理 100 万个订单,每个订单都有一个“城市名”字段。虽然全球只有几千个城市,但在内存中,你可能存储了 100 万个独立的字符串对象。这种现象被称为“冗余存储”。过去,资深开发者会通过手动维护一个全局的 map 来做字符串去重(Interning),但这种做法往往伴随着复杂的锁竞争和难以控制的垃圾回收(GC)开销。
在 Go 1.23 发布后,处理大规模数据系统时的“内存爆炸”问题有了一个极其优雅的官方解法。
最近,官方终于出手了。全新的 unique 标准库包正式登场。它用一种极其优雅且高性能的方式,解决了值去重与规范化(Canonicalization)的难题。