为了账号安全,请及时绑定邮箱和手机立即绑定

使用变量地址调用指针接收器方法

使用变量地址调用指针接收器方法

Go
墨色风雨 2023-07-31 15:46:25
我正在学习指针接收器,并注意到当我使用变量的地址调用该方法时出现错误./prog.go:21:10: v.Scale(10) used as value我可以仅使用变量名或使用指针来调用该方法。我试图理解为什么当我使用变量的地址调用&v.Scale(10)而方法需要Vertex类型指针时 Go 会抱怨import (    "fmt")type Vertex struct {    X, Y float64}func (v *Vertex) Scale(f float64) {    v.X = v.X * f    v.Y = v.Y * f}func main() {    v := Vertex{3, 4}    var p *Vertex    p=&v    v.Scale(10)        //This works    p.Scale(10)        //This works    &v.Scale(10)       // This does not work    fmt.Println(v)}
查看完整描述

1 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

该声明

&v.Scale(10)

相当于

&(v.Scale(10))

编译器会抱怨,因为v.Scale(10)被用作值。

使用这个代替:

(&v).Scale(10)


查看完整回答
反对 回复 2023-07-31
  • 1 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信