我目前正在学习使用Go语言编程。我在理解Go指针时遇到了一些困难(并且我的C / C ++现在很遥远...)。例如,在“第52号巡回赛”(http://tour.golang.org/#52)中,我读到:
type Vertex struct {
X, Y float64
}
func (v *Vertex) Abs() float64 {
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
func main() {
v := &Vertex{3, 4}
fmt.Println(v.Abs())
}
但是如果不是
func (v *Vertex) Abs() float64 {
[...]
v := &Vertex{3, 4}
我写:
func (v Vertex) Abs() float64 {
[...]
v := Vertex{3, 4}
甚至:
func (v Vertex) Abs() float64 {
[...]
v := &Vertex{3, 4}
反之亦然:
func (v *Vertex) Abs() float64 {
[...]
v := Vertex{3, 4}
我得到了完全相同的结果。有区别吗(在内存方面,等等)?
Cats萌萌
慕雪6442864
相关分类