【发布时间】:2014-08-13 02:52:04
【问题描述】:
“Effective Go”文档说明如下。
接收者的指针与值的规则是值方法可以在指针和值上调用,但指针方法只能在指针上调用。
http://tip.golang.org/doc/effective_go.html#pointers_vs_values
这样,如果我定义一个像下面这样的方法,它不是不能用值调用吗?
func (self *someStruct) Change(newNum int) {
self.propertyOne = newNum
}
但是,以下方法似乎仍然有效。
structInstance := &someStruct{
propertyOne: 41,
}
(*structInstance).Change(456)
为什么?
它是否将值(*structInstance) 转换回Change 调用的地址/指针?
如何确保某个类型的某些实例不能调用指针上定义的方法(如Change)?
去游乐场演示
【问题讨论】:
标签: go