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

为什么 go 函数的定义不同?

为什么 go 函数的定义不同?

Go
精慕HU 2021-07-29 14:45:23
我正在努力学习围棋。当我认为我了解什么是函数、如何使用它并希望进入接口时,我陷入了困境(来源 Go 博客)package mainimport "fmt"//define a Rectangle struct that has a length and a widthtype Rectangle struct {    length, width int}//write a function Area that can apply to a Rectangle typefunc (r Rectangle) Area() int {   return r.length * r.width}func main() {   r := Rectangle{length:5, width:3} //define a new Rectangle instance with values for its properties   fmt.Println("Rectangle details are: ",r)     fmt.Println("Rectangle's area is: ", r.Area())}为什么我们有 func (r Rectangle) Area() int而没有func Area(r Rectangle) int?有什么不同吗?
查看完整描述

3 回答

?
子衿沉夜

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

它是一种方法而不是函数。通常,您可以选择您更喜欢使用的方法(尽管当您有多个函数都作用于同一类型的对象时,方法通常更有意义)。唯一需要注意的是,您只能使用带有接口的方法。例如:


type Shape interface {

    Area() int

}


type Rectangle struct {

    ...

}


func (r *Rectangle) Area() int {

    ...

}

在这种情况下,要满足Shape接口,Area()必须是方法。拥有:


func Area(r *Rectangle) int {

    ...

}

不会满足接口。


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

添加回答

举报

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