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

Go中的泛型是什么?

毛声
2023-03-14
问题内容

最近,人们对Go提出了很多批评,因为它不支持泛型。这到底是什么意思呢?您如何向不熟悉这种动态类型语言(如Ruby)的人解释这一点?


问题答案:

在动态类型语言中,您不必关心列表是什么类型,而只是列表。但是,在静态类型的语言中,您确实在意列表的类型,因为类型是“ A的列表”,其中“
A”是某种类型。也就是说,a list A与的类型不同list B

因此,当您谈到泛型时,调用类型A -> B为列表中每个项目的某个函数时,foreach意味着该列表必须为list A。但是…如果使用泛型,则不必声明是什么A,只需稍后再填写即可。因此,您可以建立合同,据此给定a list C和函数A -> BA === C以便对其进行编译。这大大减少了样板。

在Go中,由于缺少泛型并且无法声明这种类型协定,因此您必须编写一个对int列表,double列表,string列表等操作的函数。您不能仅定义以“通用”方式进行操作。



 类似资料:
  • 问题内容: 免责声明:我现在只和Go玩了一天,所以我很有可能错过了很多。 有谁知道为什么Go中没有对泛型/模板/ whatsInAName的真正支持?因此,有一个通用的,但这是由编译器提供的,而Go程序员无法编写自己的实现。关于如何使Go尽可能正交的所有讨论,为什么我可以使用通用类型而不创建新类型? 尤其是在函数式编程方面,有lambda甚至闭包,但是在缺少泛型的静态类型系统中,我该如何编写泛型高

  • 问题内容: 我正在学习中,文档和交互式课程说,空可以容纳任何类型,因为它不需要其他实现的方法。 举个例子: …将打印出来… 因此,我想我的问题是这是实现通用函数的方法,还是还有另一种更合适的方法来实现它们。 问题答案: Go范式通常是通过在非空接口中实现行为来避免这种情况。例如,假设您要打印特定于类型的格式的内容: 或者,您可以为知道如何进行字符串自身设置的接口定义一个接口(该接口在库中以形式存在

  • 问题内容: Java泛型中的擦除概念是什么? 问题答案: 基本上,这是通过编译器技巧在Java中实现泛型的方式。编译后的通用代码实际上只使用你谈论的任何地方(或其他一些类型参数),并且有一些元数据告诉编译器它确实是通用类型。 当你针对通用类型或方法编译某些代码时,编译器会弄清你的实际意思(即,类型参数的含义T),并在编译时验证你做对了事情,但是发出的代码再次在讨论就-编译器在必要时生成额外的强制类

  • 问题内容: 这是什么意思,仅表示未指定类型的对象列表吗? 搜寻该字符串不会返回任何有用的信息(: 问题答案: 您需要获取更多信息的关键字是通配符

  • 本文向大家介绍请你讲讲什么是泛型?相关面试题,主要包含被问及请你讲讲什么是泛型?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JAVA泛型 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时

  • 问题内容: 例如,在以下代码中 返回类型之前的目的是什么(该行的作用或如何读取) 问题答案: 这是使您的 方法 (而不是 类 )通用的语法。 常规类和泛型类的方法可以根据其自身的类型参数进行泛型。在这种情况下,您的方法是on的通用方法,它必须是从扩展的类型。