Go 1.24.0 重磅发布:新特性、新工具,开发者必看!

作者:陈明勇

个人网站:https://chenmingyong.cn

文章持续更新,如果本文能让您有所收获,欢迎关注本号。

微信阅读可搜《程序员陈明勇》。

前言

Gopher 们,Go 1.24.0 发布啦!Go 1.24.0 相比 Go 1.23.0 有许多改进。让我们一起来看看 Go 1.24.0 带来了哪些新变化吧!

准备好了吗?准备一杯你最喜欢的咖啡或茶,随着本文一探究竟吧。

程序员陈明勇.jpeg

快速安装

您可以从下载页面下载二进制和源代码发行版:

https://go.dev/dl/#go1.24.0

如果你已经安装了其他的 Go 语言版本,你也可以通过以下命令快速安装 Go 1.24.0 版本:

$ go install golang.org/dl/go1.24.0@latest
$ go1.24.0 download
Downloaded   0.0% (   16384 / 87052317 bytes) ...
Downloaded   9.4% ( 8224752 / 87052317 bytes) ...
Downloaded  13.1% (11403248 / 87052317 bytes) ...
Downloaded  54.7% (47579136 / 87052317 bytes) ...
Downloaded  58.0% (50495488 / 87052317 bytes) ..
Downloaded  95.9% (83443664 / 87052317 bytes) ...
Downloaded  99.4% (86507056 / 87052317 bytes) ...
Downloaded 100.0% (87052317 / 87052317 bytes)
Unpacking /Users/chenmingyong/sdk/go1.24.0/go1.24.0.darwin-arm64.tar.gz ...
Success. You may now run 'go1.24.0'

$ go1.24.0 version
go version go1.24.0 darwin/arm64

语言层面上的更新

Go 1.24 现在完全支持泛型类型别名:类型别名可以像定义的类型一样被参数化。

// 1.24.0 版本之前
type MyInt[T comparable] = int // 错误提示:Generic type cannot be alias

// 1.24.0 版本及之后
type MyInt[T comparable] = int // 符合语法规定

性能改进

Go 运行时做了一些性能优化,平均减少了 2-3% 的 CPU 开销,测试覆盖了一些典型的基准。主要的优化有:用瑞士表(Swiss Tables)重新实现了内置的 map、更高效的小对象内存分配以及新的运行时内部互斥锁实现。

工具改进

  • go 命令现在提供了一个机制来跟踪模块的工具依赖。使用 go get -tool 可以将工具指令添加到当前模块中。使用 go tool [tool name] 来运行通过工具指令声明的工具。

  • 新的 go vet 子命令中的测试分析器会报告测试包中常见的错误,比如在声明测试、模糊测试、基准测试和示例时的常见问题。

标准库新增内容

  • 新增了一个弱引用(weak)包,提供了弱指针。
  • Go 的标准库现在新增了一组机制,帮助实现 FIPS 140-3 合规性。应用程序无需修改源代码,就能使用这些新机制来支持经过批准的算法。除了 FIPS 140 相关内容,之前在 x/crypto 模块中的一些包现在已经移到标准库中。
  • 基准测试现在可以使用更快速且更不易出错的 testing.B.Loop 方法来执行基准迭代,比如用 for b.Loop() { ... } 来代替传统的使用 b.N 的循环结构(比如 for range b.N)。
  • 新的 os.Root 类型提供了在特定目录下隔离执行文件系统操作的能力。
  • 运行时现在提供了一个新的终结机制 runtime.AddCleanup,它比 runtime.SetFinalizer 更加灵活、高效,并且更不容易出错。
  • 新增了一个实验性的 testing/synctest 包,用于支持并发代码的测试。synctest 包是实验性的,在构建时必须通过设置 GOEXPERIMENT=synctest 来启用。

WebAssembly 支持改进

Go 1.24 新增了 go:wasmexport 指令,用于将 Go 程序的函数导出到 WebAssembly 主机。同时,Go 现在支持将程序构建为 WASI reactor/library

小结

在本文中,简要介绍了 Go 1.24.0 版本的主要更新,涵盖了语言层面的提升、性能优化、工具链的改进以及标准库中的新增内容。

除此之外,Go 1.24.0 还在一些细节上进行了小的改进,提升了开发体验。

后续,我将深入介绍每个重要更新的具体内容,关注我,更多精彩的更新分析,敬请期待!

Go语言,通常被称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。它的设计目标是提高开发者的生产力和程序的运行效率,特别适合构建网络服务和分布式系统。在Windows操作系统下,安装Golang开发环境需要下载相应的安装包。这里提供的"Go开发工具,golang IDE安装包,windows系统下"包含了Golang的集成开发环境(IDE)——Goland以及相关的使用说明。 Goland是一款由JetBrains公司推出的专门针对Go语言的高效开发工具,它为Go开发者提供了强大的代码补全、调试、重构和代码审查等功能。Goland-2018.3.exe是该IDE的一个特定版本,可能包含了2018年第三季度的一些更新和改进,用户可以通过执行这个可执行文件来安装Goland。 在安装过程中,用户通常需要选择安装路径,确认是否添加到PATH环境变量,以便在命令行中直接使用go命令。安装完成后,Goland会自动检测并配置Go的编译环境,包括设置GOROOT(Go语言的安装目录)和GOPATH(工作区路径),这对于新手来说是非常方便的。 同时,压缩包中的"golang说明.txt"文件很可能是对如何使用Golang进行开发,以及如何操作Goland IDE的基本指导。这份文件可能涵盖了如何创建新项目、设置Go环境变量、使用内置的包管理器go mod、运行和调试程序等内容。对于初学者来说,这是理解并快速上手Go语言开发的重要参考资料。 在使用Golang进行开发时,有几个关键概念是需要了解的: 1. **GOPATH**:在早期版本中,GOPATH是存放项目源码、编译后的对象文件和第三方包的地方。从Go 1.11版本开始,引入了go modules,但理解GOPATH仍然有助于理解Go的工作方式。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员陈_明勇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值