Go 1.22 已经发布,了解其新特性和改进

戈兰

Go 是一种并发的编译型编程语言,具有受 C 语法启发的静态类型。

新版本 Go 1.22,在版本 1.21 六个月后发布, 对工具集、运行时、优化改进、编译器改进和库进行了许多显着更改。

对于那些不了解 Go 的人,我必须告诉你,这是这是谷歌正在开发的一种编程语言 在社区的参与下,作为一种混合解决方案,结合了编译语言的高性能和脚本语言的优点,例如易于编写代码、开发速度和防止错误。

Go 1.22的主要新功能

在这个从 Go 1.22 引入的新版本中,重点介绍了 “for”循环的两个变化以前,for 循环声明的变量只创建一次 并在每次迭代中进行更新。 在 Go 1.22 中,循环的每次迭代都会创建新变量 以避免意外共享错误,此外 添加了对 for 循环范围函数的实验支持 (GOEXPERIMENT=rangefunc), 它允许您将函数指定为迭代器并且 解决了 for 循环的一个长期存在的问题 这导致协程调用在迭代之间共享循环变量。此外,for 循环现在可以循环整数。例如:

package main import "fmt" func main() { for i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 起飞!") }

这个新版本的另一个显着变化是引入了 使用目录的能力 «供应商« 其中包含工作区依赖项。现在命令 你可以使用这个目录,它是用`创建的去工作供应商` 并在构建命令中使用 当`被设置时-mod` 在 «供应商«,这是目录存在时的默认值 «供应商» 在工作区中。

需要注意的是,该功能的功能 `去弄模式下的模块外部不再支持` GOPATH 继承但是,其他构建命令如 “去构建”和“去测试” 他们将继续无限期地为遗留的 GOPATH 项目工作。此外,命令 `去模组初始化` 将不再尝试从其他 « 的配置文件导入模块需求“贩卖” (如 Gopkg.lock)。

Go 1.22 引入了 新包装 io/不安全 它提供了使用指针和不安全内存的功能。该包提供了在安全和不安全类型之间转换指针的方法,以及在不进行边界检查的情况下执行内存复制操作的方法。

工作继续包括根据 p 结果对编译器进行优化PGO 代码分析, 就是这样 现在编译器使用去虚拟化工具来代替间接调用 具有扩展内联块执行的各种方法。启用 PGO 后,添加的更改将大多数程序的性能提高了 2% 到 14%。

在版本中 使用 Windows、链接或加载库的程序 去构建 -buildmode=c-存档 o -buildmode=c-共享 现在可以使用事件日志 Windows (ETW) API 通过新的套餐 运行时/跟踪 y 跟踪钩子,它作为 ETW 提供者实现了 Go 事件跟踪收集协议。

在其他突出的变化中:

  • 命令 去测试覆盖 现在打印没有自己的测试文件的覆盖包的覆盖摘要。
  • 操作系统/执行,添加了定义上下文属性的功能,允许您设置执行命令的工作目录、环境变量和输入/输出文件描述符等值。
  • 优化运行时内存管理,使大多数应用程序的性能提高 1-3%,内存消耗降低 1%。
  • 埃尔帕克特 网络/http,该功能已添加 关闭空闲连接 发送给HTTP客户端,关闭客户端最近使用过的所有空闲连接
  • 编译器中添加了调用插入机制的改进实验实现 (GOEXPERIMENT=newinliner),它使用启发式方法将重要操作与不重要操作分开。
  • 包已添加 » 数学/兰德/v2 » 标准库,它提供了更一致的 API 并使用更快的算法来生成伪随机数。
  • 埃尔帕克特 网/http.ServeMux 添加了在模板中指定方法和掩码的功能。

最后,如果你是 有兴趣了解更多关于它的信息, 您可以查看详细信息 在下面的链接中。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。