一尘不染

空接口与通用接口有何不同?

go

也许我并不完全了解泛型的功能,但是空接口与泛型有什么interface{}不同,特别是如果我们能够使用反射或类型开关的话?人们总是提到Go没有泛型,但是interface{}看起来它的工作可以与<T>Java中的类似。


阅读 280

收藏
2020-07-02

共1个答案

一尘不染

如果您来自Java,则空接口(interface{})实际上Object比使用泛型更接近使用Java中的变量。

您可以为分配任何内容interface{}(就像您可以使用ObjectJava中的变量一样)。

但是,如果要使用存储在其中的实际类型,则应该“强制转换”或“类型断言”(与ObjectJava中的变量相同)。

Java中的泛型完全不同,因为它们允许您在编译时进行类型检查。不同之处在于,如果您使用泛型,则无需求助于反射或类型切换。

您可以在此处阅读有关Java泛型的更多信息:

https://docs.oracle.com/javase/tutorial/java/generics/

然后按照此处以及“开始”游览的接下来的2或3步操作,详细了解空界面的工作原理:

https://tour.golang.org/methods/14

2020-07-02