Arrays 数组中的Golang指针
我想知道为什么这段代码不能更改数组中的值 我试图通过指针修改数组中的元素。不是索引Arrays 数组中的Golang指针,arrays,pointers,go,Arrays,Pointers,Go,我想知道为什么这段代码不能更改数组中的值 我试图通过指针修改数组中的元素。不是索引 import "fmt" func main() { array := []Type{} array = append(array, Type{2}) array = append(array, Type{3}) array = append(array, Type{4}) array = append(array, Type{5}) res := []*Ty
import "fmt"
func main() {
array := []Type{}
array = append(array, Type{2})
array = append(array, Type{3})
array = append(array, Type{4})
array = append(array, Type{5})
res := []*Type{}
for _, a := range array {
a1 := a
res = append(res, &a1)
}
for _,v := range res {
v1 := v
v1.number++
}
for _, t := range res {
fmt.Print(t.number)
}
}
type Type struct {
number int32
}
我的预期结果应该是3,4,5,6。但是结果没有改变,所以我想知道详细的原因。我是新来的。请详细告诉我如果问题是为什么原始数组中的值没有被修改,那么答案是因为范围中引入的迭代项是原始项的副本。要解决问题,您可以执行以下操作:
对于i:=范围数组{
res=appendres和数组[i]
}
查看以下参考资料:
欢迎来到SO:发布问题时请花点时间。让它看起来很好,尽可能的清晰,并且尽你最大的努力把它格式化好。谢谢。您的期望正是所发生的:在a1:=a之后添加fmt.Printf%p%p\n、&a和&a1行可能有助于解释发生了什么。