go1.22 新特性(日常使用相关)
注:文章参考https://zhuanlan.zhihu.com/p/679475977
for循环
- 循环共享变量问题
Go在1.22版本之前,for 循环迭代器的变量是一个单一变量,使用不当,会导致意想不到的行为,可能会造成共享循环变量的问题。 如依旧要使用旧版本,可以主动配置 GOEXPERIMENT=loopvar
package main
import (
"fmt"
"time"
)
func main() {
nums := []int{1, 2, 3, 4, 5}
for _, v := range nums {
go func() {
fmt.Println(v)
}()
}
time.Sleep(2 * time.Second)
}
同样的一段代码,在1.22之前打印出来的数据可能为 5 5 5 5 5
1.22版本打印出来可能为 1 2 3 4 5
(无序)
- 整数类型的范围进行循环迭代
package main
import "fmt"
func main() {
for i := range 5 {
fmt.Println(i)
}
}
Math/Rand 版本 2
package main
import (
"math/rand/v2"
)
func main() {
rand.Intn(100)
}
切片拼接
package main
import (
"fmt"
"slices"
)
func main() {
slice1 := []int{1, 2, 3, 4, 5}
slice2 := []int{6, 7, 8, 9, 10}
slice3 := []int{11, 12, 13, 14, 15}
// 1.22之前
merged := append(slice1, slice2...)
merged = append(merged, slice3...)
fmt.Println(merged)
// 1.22版本
merged2 := slices.Concat(slice1, slice2, slice3)
fmt.Println(merged2)
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!