Avatar ·

在Go中迭代时修改切片元素:为什么不起作用以及如何修复?

大家好!我刚开始学习Go,在迭代切片时遇到了一个令人困惑的行为。 我有一个简单的代码,想要将整数切片中的每个元素翻倍: ```go package main import "fmt" func main() { nums := []int{1, 2, 3, 4, 5} for _, val := range nums { val = val * 2 } fmt.Println(nums) // 期望:[2, 4, 6, 8, 10],但得到:[1, 2, 3, 4, 5] } ``` 我期望循环后切片中的值会改变,但它们保持不变。我检查了——编译器没有报错,代码可以运行,但结果不对。 为什么会这样?我以为`val`是对切片元素的引用,但看起来并非如此。如何在迭代时正确修改切片元素?除了使用索引之外,还有其他方法吗? 提前感谢您的帮助! <<>>

问题:迭代时值的复制

在Go中使用for range结构时,变量val