昨天,Go官网博客发布了一篇名为《 The Next Step for Generics 》的博客,为go 2的 泛型 的最终实现奠定了实现方式,并且提供了体验go 2泛型的go playground.(。
这篇文章 提到,将放弃了contracts的概念。contracts和interface类型之间的差异令人困惑,因此我们尝试消除这种差异。类型参数现在可以被接口类型的约束。现在允许接口类型包含类型列表,但只有在用作约束时才可以。在以前的设计草案中,类型列表是contracts的一个特性。更复杂的情况将使用参数化的接口类型。
泛型类型约束只支持接口类型,类似 这种
这是一个很大的特性,但是另一个呼声很高的错误 处理却搁置了,主要是热门的try 的错误处理方式因反对声音过于强烈,官方放弃了这一实现方式,错误处理也被搁置。
官方中提到, “我们将使用从 Go 社区中收集到的反馈来决定如何改进。如果设计草案很受欢迎,并且不需要重大修改,那么下一步这将是一个正式的语言变更提案。为了设定预期,如果所有人都对设计草案完全满意,并且不需要进一步的调整,那么最早泛型将会 2021 年 8 月发布的 Go 1.17 进行添加。 当然,在现实中,可能会有不可预见的问题,所以这是一个乐观的时间表; 我们不能作出任何明确的预测。”
参考链接