我正在努力学习围棋。当我认为我了解什么是函数、如何使用它并希望进入接口时,我陷入了困境(来源 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 {
...
}
不会满足接口。
- 3 回答
- 0 关注
- 196 浏览
添加回答
举报
0/150
提交
取消