Go指南:方法和接口

方法与指针重定向

带指针参数的函数必须接受一个指针:

func ScaleFunc(v *Vertex, f float64) {
v.X = v.X * f
v.Y = v.Y * f
}

以指针为接收者的方法被调用时,接收者既能为值又能为指针:

func (v *Vertex) Scale(f float64) {
v.X = v.X * f
v.Y = v.Y * f
}

对于语句 v.Scale(5),即便 v 是个值而非指针,带指针接收者的方法也能被直接调用。

Go 会将语句 v.Scale(5) 解释为 (&v).Scale(5)

使用指针接收者的原因:

方法能够修改其接收者指向的值

可以避免在每次调用方法时复制该值。若值的类型为大型结构体时,这样做会更加高效。

 


接口

接口类型 是由一组方法签名定义的集合。接口类型的变量可以保存任何实现了这些方法的值。

 

接口与隐式实现

类型通过实现一个接口的所有方法来实现该接口

type I interface {
M()
}

type T struct {
S string
}

// 此方法表示类型 T 实现了接口 I,但我们无需显式声明此事。
func (t T) M() {
fmt.Println(t.S)
}

func main() {
var i I = T{"hello"}
i.M()
}

 

posted @ 2021-01-19 13:19  _策月晓  阅读(51)  评论(0编辑  收藏  举报
jQuery火箭图标返回顶部代码

jQuery火箭图标返回顶部代码

滚动滑动条后,查看右下角查看效果。很炫哦!!

适用浏览器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗.