IDC

快报:正式提案将泛型特性加入 Go 语言

作者:admin 2021-07-19 我要评论

本文转载自微信公众号「脑子进煎鱼了」,作者陈煎鱼。转载本文请联系脑子进煎鱼了公众号。 大家好,我是煎鱼。 经历九九八十一难,多年的不断探讨和 Go 语言爱好...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

本文转载自微信公众号「脑子进煎鱼了」,作者陈煎鱼。转载本文请联系脑子进煎鱼了公众号。 

大家好,我是煎鱼。

经历九九八十一难,多年的不断探讨和 Go 语言爱好者们在社区中的强烈关注,且 Go 官方在 2020 年不断放出消息。

总算在 2021 年 1 月 12 日,官方正式提出将泛型特性加入 Go 语言的 proposal 了,且最新的草案设计已经更新。

基本语法如下:

  1. func Print[T any](s []T) { 
  2.  // same as above 

其大体的概述如下:

  • 函数可以具有使用方括号的其他类型参数列表,但其他情况下看起来像普通的参数列表:func F[T any](p T) { ... }。
  • 类型也可以具有类型参数列表:type MySlice[T any] []T。
  • 每个类型参数都有一个类型约束,就像每个普通参数都有一个类型:func F[T Constraint](p T) { ... }。
  • 类型约束是接口类型。
  • 新的预声明名称 any 是允许任何类型的类型约束。
  • 用作类型约束的接口类型可以具有预先声明的类型的列表。只有与那些类型之一匹配的类型参数才能满足约束条件。
  • 泛型函数只能使用其类型约束所允许的操作。
  • 使用泛型函数或类型需要传递类型实参。
  • 在通常情况下,类型推断允许省略函数调用的类型参数。

根据官方博客的消息,如果该提案被正式接受。那么将会在 2021 年底之前完成一个基本可用的泛型功能(可能未完全优化),又或是会作为 Go1.18beta 的一部分。

这是 Go 泛型特性的又一步历史性前进,这一个里程碑。若大家有兴趣进一步了解或想提出意见,可查看下述传送门:

  • [A Proposal for Adding Generics to Go]:https://blog.golang.org/generics-proposal。
  • [proposal: spec: add generic programming using type parameters]:https://github.com/golang/go/issues/43651。

不知道今年年底或 Go1.18beta 能不能真的看到泛型的正式完整可用版本呢,值得期待!


本文转载自网络,原文链接:https://mp.weixin.qq.com/s/oZ3TyNzVz0Obpm03rpeMuA

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 快报:正式提案将泛型特性加入 Go 语言

    快报:正式提案将泛型特性加入 Go 语言

  • 面试官:如果让你设计一个高并发的消息

    面试官:如果让你设计一个高并发的消息

  • 请查收 2020 全球 JS 现状调查报告

    请查收 2020 全球 JS 现状调查报告

  • 有关JavaScript中回调函数的所有内容!

    有关JavaScript中回调函数的所有内容!

腾讯云代理商
海外云服务器