6.1 方法声明
方法的声明和普通函数的声明类似,只是在函数名前多了一个参数。这个参数把方法绑定到这个参数对应的类型上。
import "math"
type Point struct {x, y float64}
//普通函数
func Distance(p, q Point) {
return math.HyPot(q.x - p.x, q.y - p.y)
}
//Point类型的方法
//p是方法的接收者,主调函数或方法,通过Distance方法,将消息q发送给p
//通常方法的接收者用类型的首字母
func (p Point) Distance(q Point) float64 {
return math.HyPot(q.x - p.x, q.y - p.y)
}
//函数调用
dis := Distance(p, q)
//方法调用
dis2 := p.Distance(q)
可以将方法绑定到任何类型上,从而让类型有了行为。
6.2 指针接收者的方法
如果某个类型有一个方法使用了指针接收者,那么所有方法都应该使用指针接收者,即使有些方法并不一定需要。
6.3 通过结构体内嵌组成类型
6.4 方法变量与表达式
6.5 封装