为了账号安全,请及时绑定邮箱和手机立即绑定

Go 中的方法和接收器

Go 中的方法和接收器

Go
繁华开满天机 2021-08-23 16:23:06
我在理解 Go 中的方法和接收器时遇到问题。假设我们有这个代码:package mainimport ("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 *Circle)在area函数的定义中被称为接收者,并且main我们可以在c不使用指针的情况下调用区域和通过引用传递。我可以将代码编辑为以下内容,它的工作方式相同:package mainimport ("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))}现在这只是两个代码片段之间的语法差异,还是在更深层次上发生了结构上的不同?
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

区别不仅仅是语法。使用方法,您的圆类型可以实现接口,但该功能不允许您这样做:


type areaer interface {

    area() float64

}


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信