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

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

關于 * 與 &

為什么需要用到這么多& *取地址呀?剛接觸go。我試了一下除了SetHash函數需要*其他地方都可以不用結果是一樣的。好吧其實就是太多然后弄不清楚真正的意義也不知道什么作用望解答!

正在回答

1 回答

如果我們要寫一個交換兩個整數的函數:
func?swap(a?int,?b?int)??{
???t?:=?a
???a?=?b
???b?=?t
}

func?main()??{
???a?:=?1
???b?:=?2
???fmt.Println(a,?b)
???swap(a,?b)
???fmt.Println(a,?b)
}

程序運行之后,你會發現a和b根本沒有交換,因為傳遞給swap函數的只是值,相當于對a和b的副本進行了交換;
而如果用指針來實現:
func?swap(a?*int,?b?*int)??{
???t?:=?*a
???*a?=?*b
???*b?=?t
}

func?main()??{
???a?:=?1
???b?:=?2
???fmt.Println(a,?b)
???swap(&a,?&b)
???fmt.Println(a,?b)
}
結果才是我們想要的。
因為要對傳遞給函數的變量進行修改,所以要用指針。


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

舉報

0/150
提交
取消

關于 * 與 &

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

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

幫助反饋 APP下載

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

公眾號

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