当我在方法上创建一个自我对象时,这是一个糟糕的代码吗?像这样(看方法Create)package mainimport ( "fmt")type SelfInitialisator struct { Fields1, Fields2 string}func (rcv *SelfInitialisator) Method1() { fmt.Println(rcv.Fields1, rcv.Fields2)}func (rcv *SelfInitialisator) CreateObject() { s := new(SelfInitialisator) s.Fields1 = "Hello" s.Fields2 = "Foo"}func main() { s := new(SelfInitialisator) s.CreateObject()}
2 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
在这段代码中,您正在创建一个内存对象,然后将其丢弃并创建另一个效率相当低的对象。你也不退货。
s := new(SelfInitialisator)
s.CreateObject()
Go 的方法是使用一个函数来创建你的对象,就像这样
func NewSelfInitialisator() *SelfInitialisator {
s := new(SelfInitialisator)
s.Fields1 = "Hello"
s.Fields2 = "Foo"
return s
}
并打电话
s := NewSelfInitialisator()
江户川乱折腾
TA贡献1851条经验 获得超5个赞
它不会改变接收者,只会创建另一个在 CreateObject() 调用结束时丢失的实例。
您可以直接使用接收器来初始化其内容:
func (rcv *SelfInitialisator) CreateObject() { rcv.Fields1 = "Hello" rcv.Fields2 = "Foo"}
- 2 回答
- 0 关注
- 199 浏览
添加回答
举报
0/150
提交
取消