无法控制父初始化时初始化嵌入式结构

时间:2016-12-26 14:08:50

标签: go

我有一个结构:

type Parent struct {
  *WithContext
}

type WithContext struct {
  Ctx context.Context
}

func (wi *WithContext) SetContext(ctx context.Context) {
  // nil pointer
  wi.Ctx = ctx
}

Parent由一些自动化进程初始化(作为解组流的一部分),因此我无法初始化嵌入的WithContext结构,

有没有办法避免'SetContext'函数中的nil指针?我尝试重写指针接收器,但它没有任何效果,

谢谢,

阿萨夫。

1 个答案:

答案 0 :(得分:1)

理想情况下,构建Parent结构的任何内容都应初始化它,使其处于可用状态。但由于你无法控制它,下一个最好的事情就是让一段代码让你在WithContext中设置Parent指针,方法是在Parent上提供成员函数或者只需在您的应用程序中设置一段代码即可,因为WithContext字段已导出。