我想弄清楚为什么当我更新返回值时,GetPerson() 方法返回的 Package 值没有更新。我知道如何改变方法以使其发挥作用,在解释发生了什么之后,我更了解了?package main import "fmt"type Person struct{ FirstName, LastName string Age int}var p Person = Person{"Bob","Rolf",15}func GetPerson() Person{ return p}func main(){ fmt.Println(GetPerson()) rP := GetPerson() rP.Age = 40 fmt.Println(GetPerson())}
1 回答

拉莫斯之舞
TA贡献1820条经验 获得超10个赞
GetPreson 返回值的副本。对副本的更改不会反映在原件中。
返回指向该值的指针并通过指针更新。
package main
import "fmt"
type Person struct{
FirstName, LastName string
Age int
}
var p Person = Person{"Bob","Rolf",15}
func GetPerson() *Person{ // note *
return &p // note &
}
func main(){
fmt.Println(GetPerson())
rP := GetPerson()
rP.Age = 40
fmt.Println(GetPerson())
}
- 1 回答
- 0 关注
- 142 浏览
添加回答
举报
0/150
提交
取消