也许我并不完全精通泛型的功能,但是空接口interface{}
与泛型有什么不同,特别是如果我们能够使用反射或类型切换的话?人们总是提到Go没有泛型,但是interface{}
似乎可以与Java中的<T>
相媲美.
也许我并不完全精通泛型的功能,但是空接口interface{}
与泛型有什么不同,特别是如果我们能够使用反射或类型切换的话?人们总是提到Go没有泛型,但是interface{}
似乎可以与Java中的<T>
相媲美.
如果您来自Java,那么空接口(interface{}
)实际上更接近于在Java中使用Object
个变量,而不是泛型.
可以将任何内容分配给interface{}
(就像Java中的Object
变量一样).
但是,如果您想要使用存储在那里的实际类型(与Java中需要处理Object
个变量相同),则应该"强制转换"或"类型断言".
Java中的泛型非常不同,因为它们允许您在编译时保持类型判断.不同之处在于,如果使用泛型,就不需要使用反射或类型切换.
您可以在此处阅读有关Java泛型的更多信息:
https://docs.oracle.com/javase/tutorial/java/generics/个
然后按照这里的Go教程的后续两三个步骤进行操作,以了解有关空界面如何工作的更多信息: