在方法体内,用指针作为参数,可以提高效率!
而方法体内,使用时不需要加指针标识符:*,仅需要在方法参数处标明即可。
原因在于,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)
}