-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