Go 泛型草案更新,明年8月发布的 Go 1.17 将引入
Go 团队近日在博客介绍了 Go 泛型的最新进展。
Go 团队表示他们一直在完善泛型的设计草案,并为此编写了一个类型检查器——可按照设计草案中的说明,解析使用泛型的 Go 代码并报告任何类型的错误。为了收集社区的反馈,他们还编写了示例代码并在草案中提供。
根据收集的反馈和了解的信息,Go 团队发布了更新后的泛型设计草案。
"The design is fully backward compatible with Go 1",完全兼容 Go 1
新版草案最大的变化是放弃了关于 contracts 的想法。因为团队认为 contracts 和 interface 类型之间的区别会令人感到困扰,所以他们正在消除这种区别。类型参数现在受 interface 类型约束,当 interface 类型仅作为约束(constraints)使用时,可被允许包含类型列表。在旧版的设计草案中,类型列表属于 contracts 的功能。更复杂的情况将使用参数化的 interface 类型.
为了帮助决定如何进一步完善设计草案,团队还发布了翻译工具。此工具可用于类型检查,以及运行使用设计草案中描述的泛型版本编写的代码。它通过将泛型代码翻译为普通的 Go 代码来工作。此翻译过程有一定的局限性,不过团队主要是希望借此让大家对 Go 泛型的整体有所了解。如果泛型最终被吸纳,它们的实际实现可能会有所不同。
此工具已在 Go playground 的变体上提供,这个 playground 的工作方式与常见的 Go playground 相同,不过前者支持泛型代码。团队希望此工具能为 Go 用户提供尝试使用泛型的机会,并了解两件主要的事。
首先,Go 泛型是否有意义,能给用户带去怎样的惊喜,错误提示消息是否有价值;其次,很多人曾说过需要 Go 泛型,但他们不一定确切知道这意味着什么,那么泛型的设计草案是否以有用的方式解决了此问题。另外,假如有一个问题让人认为“如果 Go 具有泛型,我就可以解决此问题”,那么使用此工具是否可以解决问题?
至于具体的推进计划,Go 团队表示要根据从社区收集的反馈而定。如果设计草案受到好评,并且不需要进行重大更改,那么下一步将是正式的语言变更提案。
为了保证符合预期,如果每个人都对设计草案完全满意,并且不需要进行任何进一步的调整,则最早可以在计划于2021年8月发布的 Go 1.17 中添加泛型。不过可能存在无法预料的问题,所以这是一个乐观的时间表,团队也无法做出任何明确的预测。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
FreeBSD 11.4 正式发布,类 Unix 操作系统
FreeBSD 11.4已经发布,这是 stable/11 分支的第五个也是最后一个版本。FreeBSD 是一种自由类 Unix 操作系统,是由经过 BSD、386BSD 和 4.4BSD 发展而来的类 Unix 的一个重要分支。 更新亮点: clang、llvm、lld、lldb 和 Compiler-rt 实用程序以及 libc++ 已更新为上游版本 10.0.0 OpenSSL 已更新至版本 1.0.2u Unbound 已更新至版本 1.9.6 pkg(8)实用程序已更新至版本 1.13.2 KDE 桌面环境已更新至版本 5.18.4.1.19.12.3 GNOME 桌面环境已更新至版本 3.28 支持重命名 ZFS 书签 添加certctl(8) 实用程序 对用户态应用程序的一些功能添加和更新 现在,在所有 FreeBSD 版本中都将打印对将来版本中弃用功能的警告 已为 RFC 6649 和 8429 中弃用的 Kerberos GSS API 算法添加了警告 FreeBSD 11.4-RELEASE 现已提供给 amd64、i386、powerpc、powerpc64、sp...
- 下一篇
每日一博|保护 Kafka 环境的最佳实践
对于许多企业来说,Kafka是整个企业数据系统的中枢和源泉,因此保护事件流平台对于数据安全至关重要,并且通常是管理层要求的。本文会讲述五个安全类别以及Kafka和Confluent平台的基本功能,这些功能可以帮助用户保护事件流平台。 认证方式 认证机制会验证接入Kafka和Confluent平台的用户和应用的身份。需要关注的与认证相关的主要领域有三个:Kafka的Broker或Confluent的服务端,Apache ZooKeeper的服务端以及基于HTTP的服务。HTTP服务包括Kafka Connect工作节点、ksqlDB服务端、Confluent REST代理、模式注册表和Control Center。验证与这些服务的所有连接是安全的基础。 Kafka Broker和Confluent服务端 Kafka Broker和Confluent服务端使用简单认证和安全层(SASL)或mutual TLS(mTLS)对来自客户端和其他Broker的连接进行身份验证。 SASL是用于身份验证的框架,提供了多种身份验证机制。当前支持的SASL机制包括PLAIN、SCRAM、GSSAPI(K...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果