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)
}
标签:int,fmt,特性,go1.22,func,Println,1.22,main,日常
From: https://www.cnblogs.com/xingzr/p/18049617