备受期待的 Go 1.18 编程语言终于作为生产版本发布,具有突破性的泛型功能。这标志着 Go 编程语言自 2012 年首次推出 Go 1.0 以来最重大的变化。Go 1.18 可以从 3 月 15 日起在 go.dev 下载。
泛型一直是 Go 程序员最需要的功能,它为使用参数化类型的泛型代码提供支持。后续版本计划为更复杂的通用用例提供进一步支持。用户可以通过通用教程和发行说明访问有关此功能的信息。
Go 语言服务器 gopls 以及 Visual Studio Code Go 扩展现在支持泛型。有关使用泛型安装 gopls 的说明,请参阅文档。
Go 1.18 生产版本落后于其测试版和候选发布阶段。最初的发布预计在 2022 年 2 月,但被推迟到 3 月中旬。 Go 1.18 Beta 1 于 12 月 14 日首次亮相,是 Google 开发的支持使用参数化类型的通用代码的开源语言的最重要预览版。这个测试版也是有史以来下载次数最多的 Go 测试版,下载量是之前任何测试版的两倍。
泛型编程是一种增强功能,它允许以泛型形式表示函数和数据结构,并提取出类型。这有助于共享代码并简化程序的构建。
Go 团队建议在使用新的泛型功能时要谨慎,因为任何重要的新功能都可能会出现新的错误。此外,对特定微妙情况的支持,例如某些递归泛型类型,已推迟到未来的版本中。
尽管有此警告,但据报道,早期采用者对新功能感到满意。此处发布了有关泛型入门的简短教程。正如 2019 年 7 月的一篇博文所述,虽然 Go 具有接口类型(一种泛型编程形式),但它缺少 Go 开发人员希望从泛型中获得的某些方面。例如,Go 泛型的支持者寻求像 Reverse 这样的函数而不关心切片的元素类型。
Go 1.18 的发布说明还强调了它的其他关键特性,例如:
- 内置支持编写基于模糊测试的测试,以识别导致程序崩溃或返回无效答案的输入。此功能在 Go 1.18 中是实验性的。
- Go 工作区模式使开发人员能够同时使用多个 Go 模块,这对于更广泛的项目至关重要。
- 一个增强的 go version -m 命令,现在可以记录构建细节,例如编译器标志。
- 一个 GOAMD64 环境变量,允许用户从四个版本的 AMD64 架构中进行选择。
- Apple M1、ARM64 和 PowerPC64 上的 CPU 性能提高了 20%,这归功于 Go 1.17 寄存器 ABI 调用约定对这些架构的扩展。
- Windows/Arm 和 Windows/Arm64 端口现在支持非合作抢占,使所有四个 Windows 端口都可以使用此功能,并可能解决调用长时间阻塞的 Win32 函数时遇到的细微错误。
- 当 GC 工作的非堆来源很重要时,由于在确定垃圾收集运行频率时包含这些来源,因此更可预测的垃圾收集开销。
Go 1.17 于 8 月发布。 Go 以其在 Docker 容器系统开发中的使用而闻名,旨在成为一种简单易学的编程语言,对并发性提供强大的支持。对于希望探索no-code解决方案(例如AppMaster的平台)以创建 Web、移动和后端应用程序的开发人员,它可以帮助加快应用程序开发并降低成本,同时消除技术债务。