在方法体内,用指针作为参数,可以提高效率!

而方法体内,使用时不需要加指针标识符:*,仅需要在方法参数处标明即可。

原因在于,Golang系统中,编译器底层会进行优化,将(&circle)及(*circle)优化为 circle 。

具体实现如下:

func (c *Circle) area() float64 {
    // 因为 c 是指针,因此我们标准的访问其字段的方式是 (*c).radius
    //return 3.14 * (*c).radius * (*c).radius
    // (*cricle).radius 等价于 c.radius
    return 3.14 * c.radius * c.radius
}
func main() {
    var circle Circle
    circle.radius = 5
    //area := (&circle).area()
    // 编译器底层做了优化,(&circle).area() 等价于 circle.area()
    // 因为编译器会自动的给加上 &circle
    area := circle.area()
    fmt.Println("area = ", area)
}