鍍金池/ 問答/GO/ 為什么說 golang 編譯器并不是總能獲取到值的地址

為什么說 golang 編譯器并不是總能獲取到值的地址

如題 :golang 編譯器并不是總能獲取到值的地址


type Integer int 

func (i *Integer) pretty(){
 
}

Integer(25).pretty()//運(yùn)行錯(cuò)誤,無法找到指針

請(qǐng)教給位 ,為什么這樣說,什么情況下找不到指針,原理是什么

回答
編輯回答
避風(fēng)港

golang的人好少,只能夠邀請(qǐng)你們幾位,感謝各位!

2017年7月2日 22:40
編輯回答
吃藕丑

因?yàn)?Integer(25).pretty() 將被優(yōu)化成一個(gè)整數(shù)(常量)25 調(diào)用 pretty 函數(shù) 。

你應(yīng)該添加一個(gè)臨時(shí)變量,像這樣

n := Integer(25)
n.pretty()
2017年11月15日 23:58
編輯回答
離殤
  • 常量沒法取指針是合理的,如果常量能取到指針,那就意味著可以修改,也就不能叫常量了。
  • 這里有一篇關(guān)于go addressable的博文。
2018年4月9日 00:26