博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快报:正式提案将泛型特性加入 Go 语言
阅读量:2289 次
发布时间:2019-05-09

本文共 940 字,大约阅读时间需要 3 分钟。

大家好,我是煎鱼。

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

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

基本语法如下:

func Print[T any](s []T) { // 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 能不能真的看到泛型的正式完整可用版本呢,值得期待!


分享 Go 语言、微服务和奇怪的系统设计

???? 长按关注煎鱼,在知识的海洋里遨游

转载地址:http://jyfnb.baihongyu.com/

你可能感兴趣的文章
Linux发送邮件
查看>>
YUM安装PHP5.6
查看>>
YUM源安装MySQL5.7
查看>>
Tomcat日志切割cronolog
查看>>
glibc-2.14安装
查看>>
升级openssl zlib版本 安装nginx
查看>>
ab压力测试
查看>>
SVN指定端口启动
查看>>
网站访问速度一般检查参数
查看>>
编译安装过程
查看>>
HTTP常见返回码信息
查看>>
WEB集群session处理方案
查看>>
JDK命令行(jps、jstat、jinfo、jmap、jhat、jstack、jstatd、hprof)与JConsole
查看>>
JAVA 对象访问: 句柄和指针
查看>>
秒杀系统优化思路
查看>>
dubbo 报错:java.lang.NoClassDefFoundError: org/I0Itec/zkclient/exception/ZkNoNodeException
查看>>
logback的使用和logback.xml详解
查看>>
Linux 快捷键
查看>>
JPA 联合主键配置
查看>>
ObjectAlreadyExistsException:Unable to store Job : '*', because one already exists with thi s ident
查看>>