修改供应商文件中的结构类型
我必须修改供应商文件中的结构。假设这是结构体在供应商文件中的方式
type sampleStruct struct {
sampleStringvar1 string
sampleStringvar2 string
}
我需要像这样再添加一个字段
type sampleStruct struct {
sampleStringvar1 string
sampleStringvar2 string
sampleBoolVar bool
}
我怎样才能做到这一点?像这样修改供应商变量是一种好习惯吗?如果不是,最好的方法是什么?
回答
如果您不想 fork 供应商库并将其替换为您自己的库,那么最佳实践是在您的项目中使用包装器。
包装对象将是结构:
- 引用
sampleStruct实例 - 带有
sampleBoolVar布尔值
那是:
type MySampleStruct {
ss *sampleStruct
sampleBoolVar bool
}
这样,您可以sampleBoolVar在供应商库继续sampleStruct像往常一样使用时受益。
但是,墨绿色指出在评论:
你如何能够引用一个未导出的结构,就像
sampleStruct它自己的包之外的那样?
这是正确的,并且上述建议不是关于公开私有变量,而是关于根据您从sampleStruct.
根据库的行为,这可能是不可能的。