0
点赞
收藏
分享

微信扫一扫

golang 1.22特性之for loop

老罗话编程 2024-07-24 阅读 23

背景

go1.22版本 for loop每轮循环都生成新的变量.
原谅: https://tip.golang.org/doc/go1.22

测试

接下来将使用同样的代码, 分别使用go1.21.4和go1.22.4版本来运行:

package main

import (
	"fmt"
	"time"
)

func main() {
	for i := 0; i < 5; i++ {
		go func() {
			fmt.Println(i, &i)
		}()
	}
	time.Sleep(time.Second)
}

在我的mac 机器上, go1.21.4的运行结果(可能每次都不太一样):

$ go run main.go
5 0x14000112008
5 0x14000112008
5 0x14000112008
3 0x14000112008
5 0x14000112008

使用go1.22.4运行的结果:

$ go run main.go
0 0x14000110018
4 0x14000110038
3 0x14000110030
1 0x14000110020
2 0x14000110028

总结

go1.22版本对于for循环中的每个循环变量, 每轮循环都是都是使用新的变量.

举报

相关推荐

0 条评论