假设我有一个像这样的原型(prototype)文件:
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
文件并改用包装器结构。
type Wrapper struct{
pb.Sample
}
func (w Wrapper) String() string{
...
}
我想到的第二个选择是,也许您可以为 protoc 编写一个插件,并在需要的结构标签给出时让它使用这些方法。
关于go - 如何在 Protocol Buffer 中使用自定义 String 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67823497/