为了账号安全,请及时绑定邮箱和手机立即绑定

方法接收器

方法接收器

Go
明月笑刀无情 2021-08-10 15:37:12
Go 方法接收器采用一个类型以及该类型的变量名称,例如:type MyFloat float64func (x MyFloat) Abs() float64 {    if x < 0 {        return float64(-x)    }    return float64(x)}func main() {    f := MyFloat(-math.Sqrt2)    fmt.Println(f.Abs())}接收器采用"x"与该类型接收所述方法沿着。叫什么名字“X”的意义。因为我能够调用的方法上MyFloat的任何实例(不只是在命名为X的一个),为什么我一定要指定x?由于接收器是一种类型或一个类型的引用,为什么不干脆把类型或单独指针像这样func (MyFloat) Abs() float64 {    if this < 0 {        return float64(-this)    }    return float64(this)}我的假设是this在 Java 中 golang 允许任何名称而不是允许任何名称?是这样吗 ?
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

这是一个设计选择。


Java的使用this,围棋琅选择其他机械师。


在去,这是合法的,使接收器的指针或没有。


让我们来看看:


func (t Type)  Id()  { return t }

func (t *Type) IdPointer() { return t }

如果去使用Java的设计?


这将成为:


func (Type)  Id()  { return this }

func (*Type) IdPointer() { return this }

首先,它是迷茫的是什么(*Type)是。


其次,这也可以是指针或值。也是一头雾水。


但是,无论如何,您可以像这样设计 Go-lang。


毕竟是一种选择。


查看完整回答
反对 回复 2021-08-10
  • 2 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信