亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

值方法的用途

func?(person?Person)?Grow()?{
????person.Age++
}
p?:=?Person{"Robert",?"Male",?33,?"Beijing"}
p.Grow()
fmt.Printf("%v\n",?p)

如果執行p.Grow()不能達到預期目的的話,要這個·值方法·功能有何用處呢?至少在這個例子里是沒用的啊


正在回答

1 回答

這個打印結果直覺上是34,但其實是33,為什么?

對于值類型方法來說,接受的標識符是值的一個拷貝的副本,不是值本身。執行Grow方法的person.Age++語句,會使副本的Age值變為34,但是打印的p的Age還是33(因為他們兩個并不是一個實例,另一個只是個副本)。

當我們把Grow方法變成指針方法后,打印的值就變成34了,因為此時傳遞的值是指針的副本,指針的副本任然指向p的值。所以累加操作會作用到person.Age上。


https://blog.csdn.net/weixin_33807284/article/details/92073495

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

值方法的用途

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號