为什么说 golang 编译器并不是总能获取到值的地址

如题 :golang 编译器并不是总能获取到值的地址


type Integer int 

func (i *Integer) pretty(){
 
}

Integer(25).pretty()//运行错误,无法找到指针

请教给位 ,为什么这样说,什么情况下找不到指针,原理是什么

阅读 3.8k
3 个回答

因为 Integer(25).pretty() 将被优化成一个整数(常量)25 调用 pretty 函数

你应该添加一个临时变量,像这样

n := Integer(25)
n.pretty()
  • 常量没法取指针是合理的,如果常量能取到指针,那就意味着可以修改,也就不能叫常量了。
  • 这里有一篇关于go addressable的博文。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏