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

我正在努力学习围棋。当我认为我了解什么是函数、如何使用它并希望进入接口时,我陷入了困境(来源 Go 博客)


package main


import "fmt"


//define a Rectangle struct that has a length and a width

type Rectangle struct { 

   length, width int

}


//write a function Area that can apply to a Rectangle type

func (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?有什么不同吗?


精慕HU
浏览 197回答 3
3回答

子衿沉夜

它是一种方法而不是函数。通常,您可以选择您更喜欢使用的方法(尽管当您有多个函数都作用于同一类型的对象时,方法通常更有意义)。唯一需要注意的是,您只能使用带有接口的方法。例如:type Shape interface {    Area() int}type Rectangle struct {    ...}func (r *Rectangle) Area() int {    ...}在这种情况下,要满足Shape接口,Area()必须是方法。拥有:func Area(r *Rectangle) int {    ...}不会满足接口。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go