鉴于该方法具有指针接收器,因此可以存储新值。例如:

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) {
    // ???
}
也许使用reflectatomic包?

最佳答案

没有。
当使用值接收器调用方法时,将使用接收器的副本来调用该方法。在接收器上执行的任何修改都将在该副本上完成。换一种说法:

x:=myTime{}
x.ValueReceiverFunc()
等效于:
x:=myTime{}
y:=x
y.ValueReceiverFunc()

10-04 21:58