[英]How to have custom String method in Protocol Buffer?
假設我有一個原型文件,例如:
message Sample {
Test t = 1;
}
message Test {
string s = 1;
}
我想在類型Test
上擁有自己的自定義String
方法,但是由於protoc
的自動生成代碼已經包含String
方法,因此我的自定義String
方法會導致編譯器錯誤。
值得一提的是,自動生成的String
方法是:
func (x *Test) String() string {
return protoimpl.X.MessageStringOf(x)
}
上面的代碼只是打印值本身,但我想知道是否有任何方法可以使用我的自定義String
實現?
我認為您不應該亂用生成的pb
文件,而是使用包裝器結構。
擊中我的第二個選擇是,也許您可以為 protoc 編寫一個插件,並在給出需要的 struct 標記時使其使用這些方法。
type Wrapper struct{
pb.Sample
}
func (w Wrapper) String() string{
...
}
我想到的第二個選項是,也許您可以為 protoc 編寫一個插件,並在需要的 struct 標簽給出時使用這些方法。
您可以替換*.pb.go
文件本身中的實現。 但是,如果原始 proto 文件在修改文件所在的相同路徑下編譯,則更改將消失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.