当前位置: 首页 > 面试题库 >

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

许永年
2023-03-14
问题内容

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


问题答案:

如果您来自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



 类似资料:
  • 问题内容: 假设我想定义一个接口,该接口代表对远程服务的调用。现在,对远程服务的调用通常会返回一些信息,但也可能包含输入参数。假设一个实现类通常只实现一个服务方法。鉴于上述信息,以下是一个较差的设计(感觉不太正确): 现在,让我们用一个类执行该接口,该类使用输入参数执行远程服务: 关于上述问题,我有两个问题: 如果要提供需要不同输入参数和接口方法返回类型的子类,则使用通用接口()是否合适? 我该如

  • 抽象类中可以存在非抽象的方法,接口中的方法被默认的变成抽象方法;   (2)实现抽象类的方法时,如果方法是抽象的,子类必须重写抽象的方法.如果方法不是抽象的,子类可以选择继承,实现了接口就必须实现接口中的所有方法,因为接口中的方法默认的全部都是抽象的方法;

  • 11.9.1 概念 空接口或者最小接口 不包含任何方法,它对实现不做任何要求: type Any interface {} 任何其他类型都实现了空接口(它不仅仅像 Java/C# 中 Object 引用类型),any 或 Any 是空接口一个很好的别名或缩写。 空接口类似 Java/C# 中所有类的基类: Object 类,二者的目标也很相近。 可以给一个空接口类型的变量 var val inte

  • 本文向大家介绍TypeScript 通用接口,包括了TypeScript 通用接口的使用技巧和注意事项,需要的朋友参考一下 示例 声明通用接口 具有多个类型参数的通用接口 实施通用接口 用泛型类实现它: 用非泛型类实现它:            

  • 为什么需要接口? 我们来看一下这个代码,对于眼神不好使的人来说简直就是遭罪,当然我这里只是简单的给了几个属性,假如有20个属性呢?20个使用这种结构的函数呢? function somefunc1({ x = 0, y = 0 }: { x: number, y: number }) { // ... } function somefunc2({ x = 0, y = 0, z = 0

  • 问题内容: 我们可以在Java中创建通用接口数组吗? 在其他班级 问题答案: 不幸的是,Java不支持创建通用数组。我不知道确切原因。实际上,泛型仅在编译时存在,并且在您运行javac时即从.java移至.class时将其删除。但是仅仅了解限制是不够的。他们可能对此功能有些向后兼容的问题。 这是您可以使用的解决方法。 使用集合(例如列表)而不是数组。 创建没有泛型的数组,将代码放入带有注释的特殊工