我正在尝试编写一些函数,该函数使用指针参数来更改结构片段。 我在GoPlayground中使用这种类型的代码做了一些游乐场,但发现我有一些错误,但是我不知道什么是最好的管理方式
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
中没有任何变化,我该如何实现?
非常感谢!
答案 0 :(得分:2)
它会更改p
,但是persons
中的值是p
的副本,而不是指向p
的指针(如打印{{1}所见}:https://play.golang.org/p/4b5fhdtuR8R)。如果使用一片指针,您将得到所需的内容:
p