一、错误示范
package main
import (
"fmt"
)
func main() {
x := []int{1, 2, 3, 4, 5}
for _, v := range x {
v = v + 10
}
fmt.Println(x)
}
输出: [1 2 3 4 5]
值没有改变,因为以上例子没有修改变量x的值,v只是一个副本循环后就销毁了
二、正确方法
调用原变量修改
package main
import (
"fmt"
)
func main() {
x := []int{1, 2, 3, 4, 5}
for k, v := range x {
x[k] = v + 10
}
fmt.Println(x)
}
输出: [11 12 13 14 15]
三、结构体示范
先获取变量x的键,通过键修改结构体内部的数值
package main
import (
"fmt"
)
type Num struct {
a int
b int
}
func main() {
x := []Num{
{1, 2},
{10, 20},
}
for k, v := range x {
x[k].a = v.a + 1000
x[k].b = v.b + 1000
}
fmt.Println(x)
}
输出: [{1001 1002} {1010 1020}]