专栏名称: GoCN
最具规模和生命力的 Go 开发者社区
目录
相关文章推荐
邳州银杏甲天下  ·  事关2027年高考,省教育厅最新公告 ·  昨天  
单向街书店  ·  【单向历】2 月 21 日,宜静止 ·  3 天前  
新京报书评周刊  ·  几乎不识字的她,完成了一部关于自己的人生叙事 ·  5 天前  
教育之江  ·  图说 | ... ·  3 天前  
教育之江  ·  图说 | ... ·  3 天前  
安徽省教育厅官微  ·  考试报名:3月3日至7日 ·  3 天前  
51好读  ›  专栏  ›  GoCN

[译]Go 语言增加泛型的提案

GoCN  · 公众号  ·  · 2021-01-14 08:00

正文

原文地址:https://blog.golang.org/generics-proposal

原文作者:Ian Lance Taylor

本文永久链接:https://github.com/gocn/translator/blob/master/2021/w3_a_proposal_for_adding_generics_to_go.md

译者:cvley

校对:guzzsek

泛型提案
我们提出一个Go语言变更提案,用于让类型系统和函数支持类型参数,类型参数使通用编程模式成为可能。
为什么支持泛型?

泛型可以提供强大的构建代码块,让代码共享和程序构建更加简便。泛型编程意味着可以先实现功能和定义数据结构,而准确的类型可以留到后面指定。比如,一个操作某些任意数据类型切片的函数,当函数被调用时才会指定实际的数据类型。或者,一个存储任意类型的数据结构,当创建这个数据结构实例时,才会指定实际存储的类型。

自从Go在2009年首次发布后,泛型的支持一直都是最常见的语言特性需求之一。在之前的博文中,你可以了解更多泛型有用的原因。

尽管泛型有明确的使用场景,但将它融入到像Go一样的语言中是非常困难的。在Go中首次(有缺陷的)添加泛型的尝试可以追溯到2010年。在过去的十年中也有多次其他的尝试。

在过去的几年中,我们在设计草案上的一系列工作,最终形成了一个基于类型参数的设计方案。这份设计草案从Go编程社区博采众长,很多朋友在之前博文中提到的泛型游乐场中进行了体验。Ian Lance Taylor 在GopherCon 2019上的演讲中介绍了添加泛型的原因和我们现在遵循的策略。Robert Griesemer在之后GopherCon 2020的演讲中分享了设计上的变更和实现细节。语言的变更是完全后向兼容的,因此现有的Go程序将继续如现在一般正常运行。我们认为设计草案已经足够好也足够简单,是时候提议将它加入到Go中了。








请到「今天看啥」查看全文