Go 泛型提案已提交,Go 1.18 beta 有望试用

局长
 局长
发布于 2021年01月13日
收藏 5

Go 团队核心成员 Ian Lance Taylor 宣布已提交为 Go 添加泛型的提案 (Proposal)。

Ian 在博客说道:“为 Go 添加泛型的语言变更完全向后兼容 (fully backward compatible),现有的 Go 程序会继续像现在一样正常运行。”

Ian 还表示如果提案能通过,Go 团队会在年底前发布一个完整但可能未优化的实现,以供开发者试用,或许会在 Go 1.18 beta 中提供。

泛型草案设计概要

  • 函数可以使用带方括号的类型参数列表,类型参数列表的其他方面和普通参数列表一样: func F[T any](p T) { ... }
  • 这些类型参数可以被常规参数使用,也可以在函数体中使用
  • 类型 (Types) 也可以使用类型参数列表: type M[T any] []T
  • 每个类型参数都有一个类型约束,正如普通参数都有一个类型:func F[T Constraint](p T) { ... }
  • 类型约束属于接口类型
  • 新的预声明名称any是允许任何类型的类型约束
  • 用作类型约束的接口类型可以使用预声明类型的列表;只有与这些类型之一相匹配的类型参数才能满足约束条件
  • 泛型函数只能使用其类型约束所允许的操作
  • 使用泛型函数或类型需要传递类型参数
  • 在通常情况下,类型推断允许省略函数调用的类型参数

详情查看 Draft Design:
https://go.googlesource.com/proposal/+/refs/heads/master/design/go2draft-type-parameters.md

Proposal: https://golang.org/issue/4365

延伸阅读

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:Go 泛型提案已提交,Go 1.18 beta 有望试用
加载中

精彩评论

sunday12345
sunday12345
放着好好的 尖括号不用,专门恶心程序员 写了好些年 golang 这次真被恶心到了~
霏微
霏微
何止,时间格式化什么鬼,使用现成的ymd之类的不好么,非要搞个2006-01-02 15:04:05,简直没谁了,对于我来说k8s是个伟大的项目,但go就算了吧,反正让我用go去建立一个自己的项目什么的还是算了吧。
二的基本算合格
二的基本算合格
2006-01-02 15:04:05 第一次用这个的时候,我简直好家伙~
fuwu360
fuwu360
写业务用java,做底层用rust
Node.js可以搞定前后台、小程序、桌面软件,通吃,一门语言搞定很多应用。
go语言的语法太奇葩,严重不习惯。
哪个都比go用着舒服
南漂一卒
南漂一卒
所以到底是用的什么符号?

最新评论(76

d
dwcz
傻啊,说的就是这种模式--先提案、再投票、最后开发--是官僚主义。都什么时代了,还相信有圣人可以事前设计出完善的方案。先以最小代价做个槽的,再来改进或淘汰。果然带头是古董,徒子徒孙都是古董思维。
t
tky951
没有泛型,就难以简便地使用C#的linq语法来处理C#那种IEnumerable<T>,就很难受。
李永波
李永波
现在存储这么便宜在乎100 200m吗
云人下天
这泛型设计的少见的恶心,除了括号,go你就不知道怎么用了吗?
longforus
longforus
为什么不用<> ???
TeaWeb
TeaWeb
不会啊,你直接写 .(type) 就行了,不用switch,比如 t := x.(type) ,或者 (x.(type)).DoSmth()
TeaWeb
TeaWeb
请仔细阅读文章内容再来喷,文中有写道:“Ian 还表示如果提案能通过,Go 团队会在年底前发布一个完整但可能未优化的实现”
风和日丽去流浪
风和日丽去流浪
真香定律会告诉你,所有的不习惯都抵不过性能强劲、开发速度带来的快感!等着你们为现实低头。
d
dwcz
你懂什么叫滚动开发吗?
今天的吉祥
今天的吉祥
可能是原来的java依赖框架太重
返回顶部
顶部