猿问

使用值接收器存储新值

鉴于该方法具有指针接收器,因此存储新值是规范的。例如:


type MyTime time.Time


func (mt *MyTime) Change(other time.Time) {

    *mt = MyTime(other)

}

但是没有指针接收器有可能吗?


type MyTime time.Time


func (mt MyTime) Change(other time.Time) {

    // ???

}

也许使用reflect或atomic包装?


Qyouu
浏览 94回答 1
1回答

森林海

不。当您使用值接收器调用方法时,将使用接收器的副本调用该方法。对接收器执行的任何修改都将在该副本上完成。换句话说:x:=myTime{}x.ValueReceiverFunc()相当于:x:=myTime{}y:=xy.ValueReceiverFunc()
随时随地看视频慕课网APP

相关分类

Go
我要回答