一、错误示范
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}]
本文通过错误示范和正确示例,详细介绍了在Go语言中如何正确修改数组或切片中元素的值。错误示范中,由于在for-range循环中,v只是x的一个副本,因此值并未改变。而正确方法是直接通过索引修改原变量,如`x[k]=v+10`。此外,还展示了如何在结构体中通过键修改内部数值。
598

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



