分类: Go programming
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()) }方法的一些注意事项
