我正在學習指針接收器,并注意到當我使用變量的地址調(diào)用該方法時出現(xiàn)錯誤./prog.go:21:10: v.Scale(10) used as value我可以僅使用變量名或使用指針來調(diào)用該方法。我試圖理解為什么當我使用變量的地址調(diào)用&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條經(jīng)驗 獲得超7個贊
該聲明
&v.Scale(10)
相當于
&(v.Scale(10))
編譯器會抱怨,因為v.Scale(10)
被用作值。
使用這個代替:
(&v).Scale(10)
- 1 回答
- 0 關(guān)注
- 116 瀏覽
添加回答
舉報
0/150
提交
取消