我正在尝试编写一些函数,该函数使用指针参数来更改结构片段。
我在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中的任何内容,我该如何实现这样的功能?

非常感谢!

最佳答案

它会更改p,但是persons中的值是p的副本,而不是p的指针(如您通过打印p:https://play.golang.org/p/4b5fhdtuR8R所看到的)。如果使用一片指针,您将获得所需的内容:

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

游乐场:https://play.golang.org/p/UTO1D5zKA0H

关于pointers - 功能指针参数更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55537118/

10-11 21:05