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

Go 在供应商文件中修改结构类型,go,struct,Go,Struct,我必须修改供应商文件中的结构。假设这就是结构在供应商文件中的方式 type sampleStruct struct { sampleStringvar1 string sampleStringvar2 string } 我需要像这样再添加一个字段 type sampleStruct struct { sampleStringvar1 string sampleStringvar2 string sample

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

type sampleStruct struct {
    sampleStringvar1       string
    sampleStringvar2       string
}
我需要像这样再添加一个字段

type sampleStruct struct {
    sampleStringvar1       string
    sampleStringvar2       string
    sampleBoolVar          bool
}
我怎样才能做到这一点?这样修改供应商变量是一种好的做法吗?如果不是,最好的方法是什么

这样修改供应商变量是一种好的做法吗

绝对不是

如果不是,最好的方法是什么


Fork供应商模块并在您的
go.mod
中使用
replace
指令引用Fork。如果您不想Fork供应商库并用自己的库替换它,那么在您的项目中,最好使用包装器

包装器对象将是struct:

  • 引用
    sampleStruct
    实例
  • 使用
    sampleBoolVar
    boolean
即:

键入MySampleStruct{
ss*样品说明
样本布尔瓦尔布尔
}
这样,您就可以从
sampleBoolVar
中获益,而供应商库则一如既往地使用
sampleStruct

但是,他指出:


如果
sampleStruct
看起来像是一个未报告的结构,那么如何在它自己的包之外引用它呢

这是正确的,前面提到的建议不是公开私有变量,而是根据您从
sampleStruct

中看到的内容,自己管理该变量
取决于库的行为,这可能是不可能的。

我认为您要寻找的是go的“继承”方式。勾选此问题:“修改供应商变量是否是一种好的做法”-否。“什么是最好的方法?”-无。完全需要另一个解决方案。这不是公开的。因此,无论如何,你不能在你的应用程序中使用它。
sampleStruct
似乎在它自己的包之外,你如何能够引用一个未报告的结构?@blackgreen的想法更多的是自己管理这个变量,而不是公开一个你无论如何都无法访问的私有变量(我同意你的看法)。我对答案进行了编辑,以引用您的评论,并使其更清晰。