这章看着有点懵懵的!!!!函数
在函数声明时,在其名字以前放上一个变量,便是一个方法。这个附加的参数会将该函数附加到这种类型上,即至关于为这种类型定义一个独占的方法code
package geometry import "math" type Point struct {X,Y float64} func Distance(p,q Point) float64 { return math.Hypot(q.X-p.X,q.Y-p.Y) } func (p Point) Distance(q Point) float64 { return math.Hypot(q.X-p.X,q.Y-p.Y) } p := Point {1,2} q := Point{5,6} fmt.Println(Distance(p,q)) fmt.Println(p.Distance(q))
能够看到,上面的两个函数调用都是Distance,可是却没有发生冲突。第一个Distance的调用实际上调用的是包级别的函数 geometry.Distance,而第二个则是使用刚刚声明Point,调用的是Point类下声明的 Point.Distance方法,这种p.Distance的表达式叫作选择器import