为了账号安全,请及时绑定邮箱和手机立即绑定

在方法上创建对象

在方法上创建对象

Go
侃侃无极 2021-09-10 16:51:16
当我在方法上创建一个自我对象时,这是一个糟糕的代码吗?像这样(看方法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()


查看完整回答
反对 回复 2021-09-10
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

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

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


查看完整回答
反对 回复 2021-09-10
  • 2 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信