理解“无法获取地址”和“无法调用指针方法”错误
使用 Go 时,可能会遇到错误例如“无法获取地址”或“无法调用指针方法”,使学习者感到困惑
问题:
考虑以下 Go 代码:
diff := projected.Minus(c.Origin) dir := diff.Normalize() // error: cannot call pointer method on Vector3 // Vector3 methods func (a *Vector3) Minus(b Vector3) Vector3 { ... } func (a *Vector3) Normalize() Vector3 { ... }
第二行会导致编译错误,因为 Vector3.Normalize()需要一个指针接收器,这意味着它需要一个指向 Vector3 值 (*Vector3) 而不是 Vector3 的指针value.
为什么会发生:
函数和方法调用的返回值在 Go 中是不可寻址的。因此,在第二个示例中,编译器无法获取 Vector3.Minus() 结果的地址,从而阻止它对该值调用 Normalize()。
可能的解决方案:
以上是为什么我无法对 Go 函数调用的结果调用指针方法?的详细内容。更多信息请关注PHP中文网其他相关文章!