5.方法
方法只是个带接收者参数的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。下面这个例子是正常写法
func Abs(v Vertex) float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) }
指针接收者:在函数的形参上加*,这样调用函数的时候就能够改变参数值了
func ScaleFunc(v *Vertex, f float64) { v.X = v.X * f v.Y = v.Y * f }
v := Vertex{3, 4} v.Scale(2)
这种就是参数里面有指针类型的时候,可以调用该方法
6.接口
定义:接口是一种类型,是一种抽象的类型
哔哩哔哩这个视频链接很不错,我是看这个理解的:www.bilibili.com/video/BV1Gt…
定一个类型,只要会叫就行,猫狗都行,因为他们都会叫。
那么接收者分为值接受和指针接受
1.值接收者是这样的(使用较多)
2.指针接收者是这样的:
此刻出现问题,原因是指针类型不满足m=p1,也就是不能存到m里面,因为p1是值类型
3.空接口:空接口可保存任何类型的值。(因为每个类型都至少实现了零个方法。)
4.类型与接口的关系:一个类型可以实现多个借口,多个类型可以实现一个借口
5.空接口可以任意实例化