0

什么是 go this(或self在 python 中)构造?

type Shape struct {
    isAlive bool
}

func (shape *Shape) setAlive(isAlive bool) {

}

setAlive函数中我该怎么做this.isAlive = isAlive;

4

2 回答 2

6

Go 的方法声明在方法名称前面有一个所谓的接收者。在您的示例中,它是(shape *Shape). 当你调用时foo.setAlive(false) foo传递shapesetAlive.

所以基本上以下是语法糖

func (shape *Shape) setAlive(isAlive bool) {
    shape.isAlive = isAlive
}

foo.setAlive(false)

为了

func setAlive(shape *Shape, isAlive bool) {
    shape.isAlive = isAlive
}

setAlive(foo, false)
于 2013-03-05T15:14:46.243 回答
4

在您的示例中,shape是接收器。你甚至可以这样写:

func (this *Shape) setAlive(isAlive bool) {
    this.isAlive = isAlive
}
于 2013-03-05T15:03:44.243 回答