方法接收器

Go 方法接收器采用一个类型以及该类型的变量名称,例如:


type MyFloat float64


func (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 允许任何名称而不是允许任何名称?是这样吗 ?


明月笑刀无情
浏览 184回答 2
2回答

www说

这是一个设计选择。Java的使用this,围棋琅选择其他机械师。在去,这是合法的,使接收器的指针或没有。让我们来看看:func (t Type)&nbsp; Id()&nbsp; { return t }func (t *Type) IdPointer() { return t }如果去使用Java的设计?这将成为:func (Type)&nbsp; Id()&nbsp; { return this }func (*Type) IdPointer() { return this }首先,它是迷茫的是什么(*Type)是。其次,这也可以是指针或值。也是一头雾水。但是,无论如何,您可以像这样设计 Go-lang。毕竟是一种选择。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go