Go支持模板或泛型吗?

JnB*_*ymn 7 oop generics go

我知道Go没有传统OOP意义上的类,但是Go确实提供了一个接口概念,允许你做大部分你想要做的OOP事情.

但是,Go是否允许创建模板类?例如,我正在阅读容器/列表包的源代码.它定义了一个列表和列表的相关方法.但是在所有方法中,列表中包含的值都是类型interface{}- 因此,任何类型.有没有办法创建一个仅限于保存特定类型值的列表?int,string,Fruit ......等等.

Eve*_*man 5

比getgo更新,有一个基于代码生成的包叫做"gen".

http://clipperhouse.github.io/gen/

gen是尝试为Go带来一些类似泛型的功能,灵感来自C#的Linq,JavaScript的Array方法和下划线库.操作包括过滤,分组,排序等.

模式是传递func,就像在Linq中传递lambdas或在JavaScript中传递函数一样.


nem*_*emo 3

基本上就是@FUZxxl所说的。

泛型?不是这个时候

模板?不完全的。有像Gotgo这样的第三方项目,旨在通过预处理文件来添加模板支持。然而,据我所知,gotgo 已经死了。

最好的选择是暂时使用接口或反射。

如果您确实想使用反射,请注意该包提供了一种用通用(反射)内容填充类型化函数变量的reflect方法。您可以使用它来使用编译器可以通过基于反射的解决方案检查的类型。