也许我并不完全了解泛型的功能,但是空接口与泛型有什么interface{}不同,特别是如果我们能够使用反射或类型开关的话?人们总是提到Go没有泛型,但是interface{}看起来它的工作可以与<T>Java中的类似。
interface{}
<T>
如果您来自Java,则空接口(interface{})实际上Object比使用泛型更接近使用Java中的变量。
Object
您可以为分配任何内容interface{}(就像您可以使用ObjectJava中的变量一样)。
但是,如果要使用存储在其中的实际类型,则应该“强制转换”或“类型断言”(与ObjectJava中的变量相同)。
Java中的泛型完全不同,因为它们允许您在编译时进行类型检查。不同之处在于,如果您使用泛型,则无需求助于反射或类型切换。
您可以在此处阅读有关Java泛型的更多信息:
https://docs.oracle.com/javase/tutorial/java/generics/
然后按照此处以及“开始”游览的接下来的2或3步操作,详细了解空界面的工作原理:
https://tour.golang.org/methods/14