我正在学习指针接收器,并注意到当我使用变量的地址调用该方法时出现错误./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)
- 1 回答
- 0 关注
- 79 浏览
添加回答
举报
0/150
提交
取消