Go 在方法上创建对象

Go 在方法上创建对象,go,Go,当我在方法上创建一个self-object时,这是一个糟糕的代码?像这样(看看Create方法) 在这段代码中,您正在创建一个内存对象,然后将其丢弃,并创建另一个效率相当低的对象。你也不会退回它 s := new(SelfInitialisator) s.CreateObject() 方法是使用函数创建对象,如下所示 func NewSelfInitialisator() *SelfInitialisator { s := new(SelfInitialisator) s.Fi

当我在方法上创建一个self-object时,这是一个糟糕的代码?像这样(看看Create方法)


在这段代码中,您正在创建一个内存对象,然后将其丢弃,并创建另一个效率相当低的对象。你也不会退回它

s := new(SelfInitialisator)
s.CreateObject()
方法是使用函数创建对象,如下所示

func NewSelfInitialisator() *SelfInitialisator {
    s := new(SelfInitialisator)
    s.Fields1 = "Hello"
    s.Fields2 = "Foo"
    return s
}
打电话

s := NewSelfInitialisator()

在这段代码中,您正在创建一个内存对象,然后将其丢弃,并创建另一个效率相当低的对象。你也不会退回它

s := new(SelfInitialisator)
s.CreateObject()
方法是使用函数创建对象,如下所示

func NewSelfInitialisator() *SelfInitialisator {
    s := new(SelfInitialisator)
    s.Fields1 = "Hello"
    s.Fields2 = "Foo"
    return s
}
打电话

s := NewSelfInitialisator()

它不会改变接收方,只会创建另一个实例,该实例将在CreateObject()调用结束时丢失。
您可以直接使用接收器初始化其内容:

func (rcv *SelfInitialisator) CreateObject() {
    rcv.Fields1 = "Hello"
    rcv.Fields2 = "Foo"
}

它不会改变接收方,只会创建另一个实例,该实例将在CreateObject()调用结束时丢失。
您可以直接使用接收器初始化其内容:

func (rcv *SelfInitialisator) CreateObject() {
    rcv.Fields1 = "Hello"
    rcv.Fields2 = "Foo"
}

我要做的是使用ServeHTTP,如下所示。正如您在ServeHTTP方法上所看到的,当我在静态方法上创建对象时,它会像在基于类的语言中一样创建自己的(controller)对象。正如您在ServeHTTP方法上看到的,当我在静态方法上创建对象时,它创建了自己的(控制器)对象,就像在基于类的语言中一样。