近期Go版本的变化与垃圾回收机制解析
1. 随机数生成函数rand.Seed()的变化
从Go 1.20开始,不再需要使用随机值调用 rand.Seed() 来初始化随机数生成器。不过,使用 rand.Seed() 不会破坏现有代码。若要获取特定的数字序列,建议使用 New(NewSource(seed)) 。示例代码如下:
src := rand.NewSource(seed)
r := rand.New(src)
for i := 0; i < times; i++ {
fmt.Println(r.Uint64())
}
运行以下命令:
$ go run randSeed.go 1
输出结果:
Using seed: 1
5577006791947779410
8674665223082153551
再次运行相同命令,会得到相同的输出,因为使用相同的种子会返回相同的数值序列。
2. Go 1.21的新特性
2.1 sync.OnceFunc()函数
sync.OnceFunc() 是 sync 包的辅助函数,其完整签名为 func OnceFunc(f func()) func(
超级会员免费看
订阅专栏 解锁全文
1250

被折叠的 条评论
为什么被折叠?



