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
- 使用
booleansampleBoolVar
键入MySampleStruct{
ss*样品说明
样本布尔瓦尔布尔
}
这样,您就可以从sampleBoolVar
中获益,而供应商库则一如既往地使用sampleStruct
但是,他指出:
如果
sampleStruct
看起来像是一个未报告的结构,那么如何在它自己的包之外引用它呢
这是正确的,前面提到的建议不是公开私有变量,而是根据您从sampleStruct
中看到的内容,自己管理该变量
取决于库的行为,这可能是不可能的。我认为您要寻找的是go的“继承”方式。勾选此问题:“修改供应商变量是否是一种好的做法”-否。“什么是最好的方法?”-无。完全需要另一个解决方案。这不是公开的。因此,无论如何,你不能在你的应用程序中使用它。
sampleStruct
似乎在它自己的包之外,你如何能够引用一个未报告的结构?@blackgreen的想法更多的是自己管理这个变量,而不是公开一个你无论如何都无法访问的私有变量(我同意你的看法)。我对答案进行了编辑,以引用您的评论,并使其更清晰。