Go中的仿制药会是什么?

Sim*_*ton 7 go

最近有很多关于Golang的批评,因为它不支持泛型.这到底是什么意思呢?您如何向来自Ruby等动态类型语言的人解释这一点,这不是一个熟悉的概念?

whe*_*ies 7

在动态类型语言中,您不关心它是什么类型的列表,只是它是一个列表.但是,在静态类型语言中,您确实关心它是什么类型的列表,因为类型是"A的列表",其中"A"是某种类型.也就是说,a list A是一种不同的类型list B.

因此,当你谈到泛型时,调用一些A -> B列表中每个项目的类型的函数,foreach意味着列表必须是a list A.但是......如果您使用泛型,那么您不必声明A它是什么,您可以在以后填写它.因此,您建立了给定a list C和函数的契约A -> B,A === C以便进行编译.这大大减少了样板.

在Go中,由于缺少泛型和声明这种类型契约的能力,你必须编写一个操作int列表,double列表,字符串列表等的函数.你不能只定义事物以"通用"的方式.