我知道Go没有传统OOP意义上的类,但是Go确实提供了一个接口概念,允许你做大部分你想要做的OOP事情。
但是,Go是否允许创建模板化类?例如,我正在阅读容器/列表包的源代码。它定义了一个列表和列表的相关方法。但是在所有方法中,列表中包含的值都是interface{}
类型 - 因此,任何类型。有没有办法创建一个限制为只保存特定类型值的列表? int,string,Fruit ......等等。
答案 0 :(得分:5)
比getgo更新,有一个名为“gen”的基于代码生成的软件包。
http://clipperhouse.github.io/gen/
gen试图为Go带来一些类似泛型的功能,灵感来自C#的Linq,JavaScript的Array方法和下划线库。操作包括过滤,分组,排序等。
模式是传递func,就像在Linq中传递lambdas或在JavaScript中传递函数一样。
答案 1 :(得分:3)
基本上是@FUZxxl所说的。
泛型? Not at this time
模板?不完全的。有一些第三方项目,如gotgo,旨在添加模板 通过预处理文件来支持。但是,据我所知,已经死了。
您最好的选择是暂时使用界面或反射。
如果您确实想要使用反射,请注意reflect
包提供了fill a typed function variable with generic (reflected) content的方式。您可以使用它来使用编译器类型
可以查看基于反射的解决方案。