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 mainimport "fmt"type changfangxing struct {length float64width 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())}
