【发布时间】:2021-09-27 20:57:18
【问题描述】:
我定义了以下方法:
func (o *MyObj) parse(something string) string {
// Do stuff
}
这段代码(1)编译得很好:
(&MyObj{}).parse(myString)
这段代码(2)也可以编译:
m := MyObj{}
m.parse(myString)
但是这段代码 (3) 不能编译:
MyObj{}.parse(myString)
出现错误
无法在“MyObj{}”上调用指针方法
我的问题:
-
为什么 (2) 会编译?我读到了T method set doesn't include *T method set,因此我希望它不会编译。
-
鉴于 (2) 编译,为什么不 (3) 编译??
【问题讨论】:
-
您是在询问 Go 设计者的基本原理,还是寻求解释您观察到的行为的权威来源?