修改供应商文件中的结构类型

bah*_*tsh 5 struct go

我必须修改供应商文件中的结构。假设这是结构体在供应商文件中的方式

type sampleStruct struct {
    sampleStringvar1       string
    sampleStringvar2       string
}
Run Code Online (Sandbox Code Playgroud)

我需要像这样再添加一个字段

type sampleStruct struct {
    sampleStringvar1       string
    sampleStringvar2       string
    sampleBoolVar          bool
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?像这样修改供应商变量是一种好习惯吗?如果不是,最好的方法是什么?

Von*_*onC 6

如果您不想 fork 供应商库并将其替换为您自己的库,那么最佳实践是在您的项目中使用包装器。

包装对象将是结构:

  • 引用sampleStruct实例
  • 带有sampleBoolVar布尔值

那是:

type MySampleStruct {
    ss            *sampleStruct 
    sampleBoolVar bool
}
Run Code Online (Sandbox Code Playgroud)

这样,您可以sampleBoolVar在供应商库继续sampleStruct像往常一样使用时受益。

但是,墨绿色指出在评论

你如何能够引用一个未导出的结构,就像sampleStruct它自己的包之外的那样?

这是正确的,并且上述建议不是关于公开私有变量,而是关于根据您从sampleStruct.
根据库的行为,这可能是不可能的。