Golang 1.18 语言规范改动
1 min read
泛型
详见:Golang 泛型初级教程和 Golang 泛型中级教程。
匿名函数内的未使用变量
在 Go 1.18 之前的版本,以下在匿名函数内的未使用变量 p 不会返回错误:
package main
func main() {
p := true
func() {
p = true
}()
}
在升级到 Go 1.18 后,会正常返回未使用错误:
# command-line-arguments
./main.go:4:2: p declared and not used
rune 类型的溢出
在 Go 1.18 之前的版本,以下 rune 类型的溢出不会返回错误:
package main
func main() {
print('1' << 32)
}
在升级到 Go 1.18 后,会正常返回溢出错误:
# command-line-arguments
./main.go:4:8: cannot use '1' << 32 (untyped rune constant 210453397504) as rune value in argument to print (overflows)
参考链接
cmd/compile: consistently report “declared but not used” errors - needs release notes #49214