假设我有一个原始文件,如下所示:
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
实现?
2条答案
按热度按时间zhte4eai1#
我不认为你应该用生成的
pb
文件来代替,而是使用 Package 结构。我想到的第二个选择是,也许你可以为protoc编写一个插件,当需要struct标记时,让它使用这些方法。
nbnkbykc2#
您可以替换
*.pb.go
文件本身的实现。但是,如果原始proto文件在修改后的文件所在的相同路径下编译,则更改将消失。