为了账号安全,请及时绑定邮箱和手机立即绑定

返回的包变量的 GoLang 值未更新

返回的包变量的 GoLang 值未更新

Go
互换的青春 2022-03-02 13:29:01
我想弄清楚为什么当我更新返回值时,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())

}    


查看完整回答
反对 回复 2022-03-02
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号