为什么使用指针或结构访问struct的成员是可以的?

时间:2016-11-24 05:12:24

标签: go

package main

import (
    "fmt"
    "math"
)

type Vertex struct {
    X, Y float64
}

func (v Vertex) Scale(f float64) {
    v.X = v.X * f
    v.Y = v.Y * f
}

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.X)
    fmt.Println(v.Abs())
}

这是我的代码: 对于v := &Vertex{3, 4}v是一个指向Vertex{3, 4}的指针, 但我发现fmt.Println(v.X)v := Vertex{3, 4}可以v := &Vertex{3, 4}, 对于用于func (v Vertex) Abs() float64类型的函数Vertex,但使用* Vertex类型调用它也是正常的。

是什么原因?

0 个答案:

没有答案