TIOBE 编程语言 8 月榜单更新,Go 排行第 8,同比上升 3 位。
Go 1.21 系列已经发布一年,当前最新版本为 go1.21.13 (released 2024-08-06)。
Go 1.22 系列也已发布半年,当前最新版本为 go1.22.6 (released 2024-08-06)。
unsetunsetGo 1.22.0unsetunset
以下是 Go 1.22 的主要更新和改进:
1. 语言:
-
"for" 循环中声明的变量现在在每次迭代中都会创建新的变量,以避免意外的共享错误。
-
"for" 循环现在可以遍历整数。
package main
import (
"fmt"
"runtime"
)func main() {
fmt.Printf("Go version: %s\n", runtime.Version())for i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 has lift-off!")
}
输出:
[shawnyan@rl9 mygo]$ go run main.go
Go version: go1.22.6
10
9
8
7
6
5
4
3
2
1
go1.22 has lift-off!
2. 工具:
- 工作空间的命令可以使用包含依赖的 vendor 目录。
go get
不再支持在模块模式之外的遗留 GOPATH 模式 (GO111MODULE=off)。go test -cover
现在会打印没有自己测试文件的覆盖包的覆盖摘要。
3. 运行时:
- 运行时现在将基于类型的垃圾收集元数据更靠近每个堆对象,从而提高 Go 程序的 CPU 性能。
4. 编译器:
- 使用 Profile-guided Optimization (PGO) 构建的程式,运行时性能可提高 2% 到 14%。
5. 链接器:
-s
和-w
标志现在在所有平台上的行为更加一致。
6. 标准库:
- 新的
math/rand/v2
包。 - 新的
go/version
包用于验证和比较 Go 版本字符串。 - HTTP 路由模式现在更加丰富,支持方法和通配符。
7. 其他:
- 各种库进行了小幅度的更新和性能改进。
8. 平台支持:
- macOS:Go 1.22 是最后一个支持 macOS 10.15 Catalina 的版本。
- ARM:
GOARM
环境变量现在可以选择使用软件或硬件浮点。 - Loong64:现在支持通过寄存器传递函数参数和结果。
- OpenBSD:添加了对 OpenBSD 的实验性支持。
unsetunsetGo 1.22.x 小版本迭代unsetunset
- go1.22.1(发布于 2024-03-05)包括对 crypto/x509、html/template、net/http、net/http/cookiejar 和 net/mail 包的安全修复,以及对编译器、go 命令、运行时、trace 命令以及 go/types 和 net/http 包的错误修复。
- go1.22.2(发布于 2024-04-03)包括对 net/http 包的安全修复,以及对编译器、go 命令、链接器以及 encoding/gob、go/types、net/http 和运行时/trace 包的错误修复。
- go1.22.3(发布于 2024-05-07)包括对 go 命令和 net 包的安全修复,以及对编译器、运行时和 net/http 包的错误修复。
- go1.22.4(发布于 2024-06-04)包括对 archive/zip 和 net/netip 包的安全修复,以及对编译器、go 命令、链接器、运行时和 os 包的错误修复。
- go1.22.5(发布于 2024-07-02)包括对 net/http 包的安全修复,以及对编译器、cgo、go 命令、链接器、运行时和 crypto/tls、go/types、net、net/http 和 os/exec 包的错误修复。
- go1.22.6(发布于 2024-08-06)包含对 go 命令、编译器、链接器、trace 命令、covdata 命令以及 bytes、go/types 和 os/exec 包的修复。
unsetunsetmacOSunsetunset
需要注意的是:
Go 1.23 将需要 macOS 11 Big Sur 或更高版本。
如果你正在 macOS 上调试 Go 语言程序,建议升级到 macOS 11 及以上版本。
本文由mdnice多平台发布