Pointers 函数指针参数更改

Pointers 函数指针参数更改,pointers,go,Pointers,Go,我试图编写一些函数,使用指针参数更改结构的一部分。 我在GoPlayder中使用这种类型的代码做了一些游戏,我发现我有一些错误,但我不知道管理它的最佳方法是什么 package main import "fmt" type Person struct { name string } func doSomething(person *Person) { person.name = "John" } func main() { var persons []Person

我试图编写一些函数,使用指针参数更改结构的一部分。 我在GoPlayder中使用这种类型的代码做了一些游戏,我发现我有一些错误,但我不知道管理它的最佳方法是什么

package main

import "fmt"

type Person struct {
    name string
}

func doSomething(person *Person) {
    person.name = "John"
}
func main() {
    var persons []Person
    p := Person{name:"David"}
    persons = append(persons, p)
    doSomething(&p)
    fmt.Println(persons)    
}
doSomething
不会改变
persons
中的任何内容,我如何实现这样的功能


非常感谢

它会更改
p
,但是
persons
中的值是
p
的副本,而不是指向
p
的指针(您可以通过打印
p
:)看到)。如果你使用一段指针,你会得到你想要的:

var persons []*Person
p := &Person{name: "David"}
persons = append(persons, p)
doSomething(p)
fmt.Println(persons[0])
fmt.Println(p)
游乐场: