Golang 1.21 语言规范改动
2 min read
内置函数
新增内置函数 min、max 来返回参数中的最小值、最大值。
新增内置函数 clear 把切片中的所有元素都设置为零值,或把 map 中的所有元素都删除。
包初始化顺序
新的语言规范对包初始化顺序给出了明确的定义。实际上就是按照深度优先搜索的顺序来初始化。
类型推断
优化了泛型函数的类型推断,并在规范中做出了明确的定义。
循环变量意外共享
为了修复一直以来的循环变量意外共享问题,可以先通过以下命令来找出受影响的代码:
go build -gcflags=all=-d=loopvar=2 .
all=
表示包括依赖包。
然后通过以下命令来启用:
GOEXPERIMENT=loopvar go build main.go
nil panic
在 Go 1.21 之前的版本,如果传入 panic 函数的参数是 nil,不会返回错误。
现在会发生错误:panicked: panic called with nil argument
。