泛型
作为一个抽象层级较高的数据类型,泛型我更喜欢叫它“快乐参数“。不用担心因为需要不同的数据类型,而写过多重复的代码,提高代码的重用性和类型安全性,另一方面也提高的代码的可读性。
用处
作为一个“快乐参数”,在什么地方使用它。这里笔者举一个简单的业务例子。在前后端交互数据的过程中,我们总能遇到的情况就是把数据在controller中进行封装,数据类型有字符串,对象等等。这里需要思考的问题就是如何保证我们的数据可以封装在一个对象或者方法中。泛型可以完美的应用到这个业务中去。我们可以让接收的参数类型为泛型,至于接收到什么类型的数据就交个java去处理了。
Go语言的泛型
虽然无论通过T类型变量实例还是*T类型变量实例都可以调用所有“继承”的方法(这也是Go语法糖)结合JAVA的继承(只能子类继承父类的实现方法)。
如果某个自定义类型T的方法集合是某个接口类型的方法集合的超集,那么就说类型T实现了该接口,并且类型T的变量可以被赋值给该接口类型的变量,即我们说的方法集合决定接口实现。
对于非接口类型的自定义类型T,其方法集合由所有receiver为T类型的方法组成;而类型*T的方法集合则包含所有receiver为T和*T类型的方法。