大家好,我是煎鱼。 现在是 2021 年 8 月份了,根据 Go 语言发布周期的 2,8 原则。Go 1.17 即将发布,在写这篇文章时,现在已经进行到了 rc2: 这意味着离 Go1.18 释出泛型的正式支持又近了一点点,社区中讨论泛型相关的周边功能的声音又多了起来。 今天要讨论的泛型版功能支持也是如此,分别包含:map(#47330)、slice(#45955)、container/set(#47331) 三种通用类型的支持。 我们主要展开 maps 和 slices,其余的都大同小异,理解核心思想就好。 maps 该提案建议定义一个新的包 maps,它将提供可用于任何类型的 map 的函数: 下面的描述侧重于描述 API 的提供: