Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 数组中的Golang指针_Arrays_Pointers_Go - Fatal编程技术网

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行可能有助于解释发生了什么。