查看原文
其他

Go使用'any'替代interface{},为泛型而变更


出品 | OSC开源社区(ID:oschina2013)
最新发布的 Go 1.18 Beta 1 包含一个值得关注的 commit,它由 Go 开发团队技术 leader Russ Cox 提交,commit 内容是使用 gofmt 命令将 Go 源代码中的所有 'interface{}' 替换为 'any'。
gofmt -w -r 'interface{} -> any' src

此 commit 页面展示了 445 个被修改的文件。
rsc 写道,执行完命令后,会恢复 bootstrap cmd 目录和某些测试数据,并根据需要调整测试。但不会恢复 std 中被引导的变化,因为其中一些变化会出现在 API 文档中,而开发团队希望能够一致地使用 'any'。
据了解,这是类型别名 (type alias) 语法,主要是为泛型而引入,最新发布 Go 1.8 Beta1 已带来了泛型支持

Go 1.18 Beta 1 可用,带有泛型

Go 1.18 Beta 1 现已可用,这是 Go 1.18 的第一个预览版;Go 1.18 的正式版发布还需要几个月的时间。
感兴趣的用户可以访问下载页面获取 Go 1.18 Beta 1:https://go.dev/dl/#go1.18beta1。
Go 1.18 Beta 1 是第一个包含 Go 对使用参数化类型的泛型代码的新支持的预览版本。官方表示,泛型是自 Go 1 发布以来 Go 最重要的变化,也是他们所做过的最大的单一语言变化。
对于任何大型的新功能,新用户发现新错误是很常见的,我们不希望泛型成为这个规则的例外;一定要以适当的谨慎态度对待它们。此外,某些微妙的情况,例如特定类型的递归泛型类型,已推迟到未来版本。也就是说,我们知道一些早期采用者已经相当满意,如果你有你认为特别适合泛型的用例,我们希望你能尝试一下。我们发布了一个 关于如何开始使用泛型的简短教程, 并在上周的 GopherCon 上做了一个演讲。你甚至可以在 Go playground 的 Go dev 分支模式下试用 。
此外,Go 1.18 Beta 1 还包含:
  • 添加了对编写基于模糊测试的内置支持 ,以自动查找导致程序崩溃或返回无效答案的输入。

  • 添加了一个新的“Go workspace mode”,它允许用户同时使用多个 Go 模块,这对大型项目来说是一个重要的用例。

  • 包含一个扩展go version -m命令,它现在可以记录 compiler flags 等构建细节 。程序可以使用 debug.ReadBuildInfo 查询自己的构建细节 ,现在可以使用新的 debug/buildinfo 包从其他二进制文件中读取构建细节 。此功能旨在成为任何需要为 Go 二进制文件生成软件物料清单 (SBOM) 的工具的基础。

  • Go 1.17 曾添加了一个新的基于寄存器的调用约定,以加速 x86-64 系统上的 Go 代码。Go 1.18 Beta 1 将该功能扩展到 ARM64 和 PPC64,从而提高了 20% 的速度。

更多详情可查看官方博客:https://go.dev/blog/go1.18beta1

END



如何评价一个开源项目的好坏?


觉得不错,请点个在看

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存