-2
我有一个结构,例如:初始化嵌入式结构当在父初始化没有控制
type Parent struct {
*WithContext
}
type WithContext struct {
Ctx context.Context
}
func (wi *WithContext) SetContext(ctx context.Context) {
// nil pointer
wi.Ctx = ctx
}
父是由一些自动化的过程初始化(如开的解组流),所以无法初始化嵌入式WithContext结构,
有没有办法避免'SetContext'func中的nil指针?我试图重写指针接收器,但它不会有任何影响,
感谢,
阿萨夫。
请提供更多信息 - 例如一个小型,完整的工作程序来说明问题。如果你说在你的“nil指针”注释之后你会得到一个无指针的恐慌,那么你可以通过做“如果wi!= nil {wi.Ctx = ct}”来解决这个问题,但为什么你的代码首先在一个nil对象上调用SetContext? – rog
如果通过反射的某些代码创建了p:= Parent {},p.SetContext(value)将导致nil,当然,我可以通过'if wi!= nil'避免nil,但是我的问题是是否可以更改指针接收器到新实例的地址。 (例如wi =&WithContext {}) – asaf000
receiver参数就像任何其他参数 - 如果更改它,它会在本地更改值,但不会有任何其他副作用。 – rog