为什么我不能在临时对象上调用指针方法?

Why can't I call a pointer method on a temporary object?

提问人:xmllmx 提问时间:6/10/2023 最后编辑:Jonathan Hallxmllmx 更新时间:6/14/2023 访问量:61

问:

type A struct{}    
func (*A) F() {}

func main() {    
    a := A{}

    a.F()      // OK
    (&a).F()   // OK

    (&A{}).F() // OK    
    A{}.F()    // Error: cannot call pointer method F on A
    (A{}).F()  // Error: cannot call pointer method F on A
}

为什么我不能在 golang 中的临时对象上调用指针方法?

go 编译器错误 标准 语言设计 临时对象

评论

3赞 Volker 6/10/2023
因为语言规范禁止它。(一些理性:指针方法用于修改对象。修改临时对象基本上是无意义的。
4赞 kaushik 6/10/2023
在语言规范中明确规定,操作数必须是可寻址的。你可以在这里阅读

答: 暂无答案