Go语言之方法

概念方法的声明和函数极为类似,区别在于在函数名称前指定了一个类型,意思就是把这个函数绑定到了这个类型上,这就是方法。这个就是OOP编程思想的体现,让方法属于某一个类型,会Java的同学可能会非常熟悉这种感觉。packagemainimport("fmt""math")typePointstruct{x,yfloat64}//普通的函数funcDistance(p,qPoint)float64{returnmath.Hypot(q.x-p....
摘要由CSDN通过智能技术生成

概念

方法的声明和函数极为类似,区别在于在函数名称前指定了一个类型,意思就是把这个函数绑定到了这个类型上,这就是方法。这个就是OOP编程思想的体现,让方法属于某一个类型,会Java的同学可能会非常熟悉这种感觉。

package main

import (
 "fmt"
 "math"
)

type Point struct {
 x, y float64
}

//普通的函数
func Distance(p, q Point) float64 {
 return math.Hypot(q.x-p.x, q.y-p.y)
}

//Point类型的方法
func (p Point) Distance(q Point) float64 {
 return math.Hypot(q.x-p.x, q.y-p.y)
}
func main() {
 p := Point{12,16}
 q := Point{14,16}
 distance := p.Distance(q)
 fmt.Println(distance)
}

附加的参数p称为方法的接收者,源于最早的面向对象的语言。

值得注意的是,Go语言中,接收者不食用特殊名(比如this或者self),而是我们自己选择接收者名字,就像其他参数变量一样。为了方便我们自己使用,我们最好给这个方法接收者起一个简短、明了的名称。

指针接收者的方法

由于主调函数会复制每一个实参变量,如果函数需要更新一个变量,或者如果一个实参太大而我们希望避免赋值整个实参,因此我们必须使用指针来传递变量的地址。这样同样适用于更新接收者:我们将它绑定到指针类型,比如:*Point。

func
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值