通常,当您想模仿面向对象的风格时,您有一个存储状态的“对象”和可以改变对象的“方法”,那么您将有一个“构造函数”函数返回一个指向结构的指针(将其视为其他 OO 语言中的“对象引用”)。Mutator 方法必须是指向结构类型的方法而不是结构类型本身,以便更改“对象”的字段,因此使用指向结构而不是结构的指针很方便值本身,因此所有“方法”都将在其方法集中。
例如,在 Java 中模仿这样的事情:
class Car {
String make;
String model;
public Car(String myMake) { make = myMake; }
public setMake(String newMake) { make = newMake; }
}
在 Go 中你经常会看到这样的东西:
type Car struct {
make string
model string
}
func NewCar(myMake string) *Car {
return &Car{myMake, ""}
}
func (self *Car) setMake(newMake string) {
self.make = newMake
}