昨日,Go 官方发布博文,Go 泛型草案更新,称最早将在 Go1.17 中加入泛型,也就是明年 8 月份。

一年前,Go 官方撰写了关于在 Go 中添加泛型的想法,并一直在完善设计草案。昨日,官方发布新设计草案。其中最大的变化是放弃了 contracts 的设计,主要是由于 contracts 和 interface 类型之间的区别令人困惑。以下是新的设计草案:

https://go.googlesource.com/proposal/+/refs/heads/master/design/go2draft-type-parameters.md

另外,为了帮助进一步完善设计草案,官方发布了一款编译工具。这是一个会进行类型检查并使用设计草案中的泛型范本编写代码的工具。它会将泛型代码转换为普通的 Go 代码。

Go Playgroung我们可以在https://go2goplay.golang.org/上的 Go playground 上使用该工具。这个 playground 的工作方式与通常的 Go playground 相同,但是它支持泛型代码。当然,我们也可以自己构建并使用该工具。

https://blog.golang.org/generics-next-step