加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Go 1.18 如何达成泛型?

发布时间:2022-03-06 01:09:16 所属栏目:大数据 来源:互联网
导读:Go 在 1.18 版本中初步支持了泛型(也称作类型参数)。泛型是 Go 1 发布以来 Go 语言最重要的变化,同时也是有史以来最大的单一语言特性变化。 近日开发团队介绍了他们如何通过字典 (dictionaries)和GC Shape Stenciling在 Go 1.18 中实现泛型。 泛型的编译
     Go 在 1.18 版本中初步支持了泛型(也称作类型参数)。泛型是 Go 1 发布以来 Go 语言最重要的变化,同时也是有史以来最大的单一语言特性变化。
 
      近日开发团队介绍了他们如何通过字典 (dictionaries)和GC Shape Stenciling在 Go 1.18 中实现泛型。
  
      泛型的编译器实现(在类型检查之后)主要侧重于创建泛型函数和方法的实例,这些实例将与具有具体类型的参数一起执行。为了避免针对泛型函数/方法的每一次调用创建不同的函数实例,并带有不同类型的参数(这种是纯粹的 stenciling 方案)。因此 Go 泛型在每次调用泛型函数/方法时都会传递一个字典。该字典提供了关于类型参数的相关信息,允许单个函数实例对许多不同的类型参数正确运行。
 
      但是,为了泛型的简洁(和性能),团队没有针对所有可能的类型参数进行单一的通用函数/方法编译。相反,他们在具有相同 gcshape 的类型参数集之间共享通用函数/方法的实例化。
 
gcshape (or gcshape grouping) 是类型的集合,当被指定为类型参数之一时,这些类型可以在泛型的实现中共享通用函数/方法的相同实例。
 
例如,在具有单一类型参数的泛型函数的场景中,只需要为同一 gcshape grouping 中的所有类型参数提供一个函数实例。同样的,对于具有单一类型参数的泛型类型的方法,只需要对同一 gcshape grouping 中的所有类型参数(泛型类型)进行一次实例化。gcshape 类型是团队实现泛型过程中使用的特定类型,他们使用这样的实例化来填充 gcshape grouping 中的所有类型。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读