转载本文请联系脑筋急转弯公众号。大家好,我是炸鱼。经过社区内Go语言爱好者多年的持续讨论和强烈关注,Go官方将在2020年继续发布消息。终于在2021年1月12日,官方正式提出在Go语言提案中加入泛型特性,并最新的设计草案已经更新。基本语法如下:funcPrint[Tany](s[]T){//sameasabove}它的大纲如下:函数可以使用方括号有其他类型的参数列表,但除此之外看起来像普通参数列表:funcF[T任何](pT){...}。类型也可以有类型参数列表:typeMySlice[Tany][]T。每个类型参数都有一个类型约束,就像每个普通参数都有一个类型:funcF[TConstraint](pT){...}。类型约束是接口类型。新的预声明名称any是允许任何类型的类型约束。用作类型约束的接口类型可以有一个预先声明的类型列表。只有匹配其中一种类型的类型参数才满足约束。泛型函数只能使用其类型约束允许的操作。使用泛型函数或类型需要传递类型参数。在通常情况下,类型推断允许省略函数调用的类型参数。根据官方博客,如果提案被正式接受。然后在2021年底前完成一个基本可用的通用功能(可能还没有完全优化),或者是Go1.18beta的一部分。这是Go泛型特性的又一次历史性进步,一个里程碑。如果有兴趣进一步了解或者想发表意见,可以查看以下传送门:【AProposalforAddingGenericstoGo】:https://blog.golang.org/generics-proposal。[提案:规范:使用类型参数添加泛型编程]:https://github.com/golang/go/issues/43651。不知道今年年底能不能看到泛型的正式完整版还是Go1.18beta,值得期待!
