为什么Go中没有泛型?
免责声明:我现在只和Go玩了一天,所以我很有可能错过了很多。
有谁知道为什么Go中没有对泛型/模板/
whatsInAName的真正支持?因此,有一个通用的map
,但这是由编译器提供的,而Go程序员无法编写自己的实现。关于如何使Go尽可能正交的所有讨论,为什么我可以使用通用类型而不创建新类型?
尤其是在函数式编程方面,有lambda甚至闭包,但是在缺少泛型的静态类型系统中,我该如何编写泛型高阶函数,如filter(predicate,
list)?好的,可以通过interface{}
牺牲类型安全性来完成链接列表等。
由于在SO /
Google上进行的快速搜索没有发现任何见解,因此,仿制药(如果有的话)似乎会在事后添加到Go中。我确实相信Thompson会比Java员工做得更好,但是为什么要排除泛型呢?还是他们已经计划并且尚未实施?
回答:
您可以在这里找到以下答案:http :
//golang.org/doc/faq#generics
为什么Go没有泛型类型?
泛型可能会在某个时候添加。尽管我们了解一些程序员,但我们对他们并不感到紧迫。
泛型很方便,但是它们以类型系统和运行时的复杂性为代价。尽管我们一直在考虑,但我们还没有找到一种能使价值与复杂性成比例的设计。同时,Go的内置映射和切片,以及使用空接口构造容器的能力(带有显式拆箱),意味着在许多情况下,即使不那么顺利,也可以编写能够实现泛型的代码。
这仍然是一个未解决的问题。
以上是 为什么Go中没有泛型? 的全部内容, 来源链接: utcz.com/qa/409741.html