[英]Modifying a struct type inside vendor files
我必須修改供應商文件中的結構。 假設這是結構在供應商文件中的方式
type sampleStruct struct {
sampleStringvar1 string
sampleStringvar2 string
}
我需要像這樣再添加一個字段
type sampleStruct struct {
sampleStringvar1 string
sampleStringvar2 string
sampleBoolVar bool
}
我怎樣才能做到這一點? 像這樣修改供應商變量是一種好習慣嗎? 如果不是,最好的方法是什么?
如果您不想分叉一個供應商的庫並將其替換為您自己的庫,那么最佳做法是在您的項目中使用包裝器。
包裝器 object 將是結構:
sampleStruct
實例sampleBoolVar
boolean那是:
type MySampleStruct {
ss *sampleStruct
sampleBoolVar bool
}
這樣,您可以從sampleBoolVar
中受益,而供應商的庫仍然像往常一樣使用sampleStruct
。
但是, blackgreen 在評論中指出:
您如何能夠引用一個未導出的結構,就像
sampleStruct
似乎在它自己的 package 之外?
這是正確的,上述建議不是關於公開私有變量,而是關於根據您從sampleStruct
中看到的內容自行管理該變量。
根據庫的行為,這可能是不可能的。
像這樣修改供應商變量是一種好習慣嗎?
絕對不。
如果不是,最好的方法是什么?
分叉供應商模塊並在go.mod
中使用replace
指令引用分叉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.