Go 接收器方法调用语法:深入探究
在《Effective Go》指南中,指出指针方法只能是在指针上调用,而值方法可以在指针或值上调用。然而,最近的一次遇到提出了一个问题:为什么下面代码中的值会调用指针方法?
为了解决这个问题,我们转向 Go 语言规范。在“调用”下,它表示:
如果 x(的类型)的方法集包含 m 并且参数列表可以分配给 m 的参数列表,则方法调用 x.m() 是有效的。如果 x 是可寻址的并且 &x 的方法集包含 m,则 x.m() 是 (&x).m() 的简写。
在我们的例子中,vAge 是可寻址的(到 *age 的类型转换是有效的),所以vAge.Set(10) 本质上是 (&vAge).Set(10)。由于Set()的接收者类型是指针,这就是为什么值vAge可以调用指针方法Set()。
以上是## Go中为什么值可以调用指针方法?的详细内容。更多信息请关注PHP中文网其他相关文章!