一尘不染

Go中的泛型是什么?

go

最近,人们对Go提出了很多批评,因为它不支持泛型。这到底是什么意思呢?您如何向不熟悉这种动态类型语言(如Ruby)的人解释这一点?


阅读 590

收藏
2020-07-02

共1个答案

一尘不染

在动态类型语言中,您不必关心列表是什么类型,而只是列表。但是,在静态类型的语言中,您确实在意列表的类型,因为类型是“ A的列表”,其中“
A”是某种类型。也就是说,a list A与的类型不同list B

因此,当您谈到泛型时,调用类型A -> B为列表中每个项目的某个函数时,foreach意味着该列表必须为list A。但是…如果使用泛型,则不必声明是什么A,只需稍后再填写即可。因此,您可以建立合同,据此给定a list C和函数A -> BA === C以便对其进行编译。这大大减少了样板。

在Go中,由于缺少泛型并且无法声明这种类型协定,因此您必须编写一个对int列表,double列表,string列表等操作的函数。您不能仅定义以“通用”方式进行操作。

2020-07-02