Go 方法简介
Go
中的 struct
结构类似于面向对象中的类。面向对象中,除了成员变量还有方法。
Go
中也有方法,它是一种特殊的函数,定义于struct
之上(与struct
关联、绑定),被称为struct
的receiver
。
它的定义方式大致如下:
type mytype struct{}
func (recv mytype) my_method(para) return_type {}
func (recv *mytype) my_method(para) return_type {}
这表示my_method()
函数是绑定在 mytype 这个 struct type 上的,是与之关联的,是独属于 mytype 的。所以,此函数称为 “方法”。所以,方法和字段一样,也是 struct 类型的一种属性。
其中方法名前面的(recv mytype)
或(recv *mytype)
是方法的 receiver,具有了 receiver 的函数才能称之为方法,它将函数和 type 进行了关联,使得函数绑定到 type 上。至于 receiver 的类型是mytype
还是*mytype
,后面详细解释。
方法调用
定义了属于 mytype
的方法之后,就可以直接通过 mytype
来调用这个方法:
mytype.my_method()
来个实际的例子,定义一个名为 changfangxing 的 struct 类型,属性为长和宽,定义属于 changfangxing 的求面积的方法 area()。
package main
import "fmt"
type changfangxing struct {
length float64
width float64
}
func (c *changfangxing) area() float64 {
return c.length * c.width
}
func main() {
c := &changfangxing{
2.5,
4.0,
}
fmt.Printf("%f\n",c.area())
}