Go 围棋中的方法和接受者
我在理解围棋的方法和接受者方面有问题。假设我们有以下代码:Go 围棋中的方法和接受者,go,Go,我在理解围棋的方法和接受者方面有问题。假设我们有以下代码: package main import ("fmt"; "math") type Circle struct { x, y, r float64 } func (c *Circle) area() float64 { return math.Pi * c.r * c.r } func main() { c := Circle{0, 0, 5} fmt.Println(c.area()) } (c*圈)在
package main
import ("fmt"; "math")
type Circle struct {
x, y, r float64
}
func (c *Circle) area() float64 {
return math.Pi * c.r * c.r
}
func main() {
c := Circle{0, 0, 5}
fmt.Println(c.area())
}
(c*圈)
在区域
函数的定义中称为接收器,在主
中,我们可以调用区域并通过引用传递c
,而无需使用指针。我可以按以下方式编辑代码,其工作原理相同:
package main
import ("fmt"; "math")
type Circle struct {
x, y, r float64
}
func circleArea(c *Circle) float64 {
return math.Pi * c.r*c.r
}
func main() {
c := Circle{0, 0, 5}
fmt.Println(circleArea(&c))
}
这仅仅是两段代码之间的语法差异,还是在更深层次上存在结构上的差异 区别不仅仅在于语法。通过一种方法,您的圆圈类型可以实现一个接口,但函数不允许您这样做:
type areaer interface {
area() float64
}