Go中的泛型是什么?
最近,人们对Go提出了很多批评,因为它不支持泛型。这到底是什么意思呢?您如何向不熟悉这种动态类型语言(如Ruby)的人解释这一点?
回答:
在动态类型语言中,您不必关心列表是什么类型,而只是列表。但是,在静态类型的语言中,您确实在意列表的类型,因为类型是“ A的列表”,其中“
A”是某种类型。也就是说,a list A
与的类型不同list B
。
因此,当您谈到泛型时,调用类型A -> B
为列表中每个项目的某个函数时,foreach
意味着该列表必须为list
A。但是…如果使用泛型,则不必声明是什么A
,只需稍后再填写即可。因此,您可以建立合同,据此给定a list C
和函数A -> B
,A
=== C以便对其进行编译。这大大减少了样板。
在Go中,由于缺少泛型并且无法声明这种类型协定,因此您必须编写一个对int列表,double列表,string列表等操作的函数。您不能仅定义以“通用”方式进行操作。
以上是 Go中的泛型是什么? 的全部内容, 来源链接: utcz.com/qa/419950.html