go - 如何在协议缓冲区中有自定义字符串方法?
问题描述
假设我有一个原型文件,例如:
message Sample {
Test t = 1;
}
message Test {
string s = 1;
}
我想在 type 上有自己的自定义String
方法Test
,但是由于自动生成的代码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 标签给出时使用这些方法。
推荐阅读
- c# - 从 netsh.exe 获取证书
- xamarin - 如何在 Visual Studio Xamarin 中使用 Phoenix Protector
- spring - 了解 Spring Webflux/Reactive 端点
- javascript - 反向 json-stringify-safe
- python-3.x - Python日志记录使文件为空
- service-worker - Cherry-pick:从不同 CDN 上具有相同文件的两个 URL,加载缓存中的任何一个
- c# - 使用 c# SDK 从 CosmosDb 中删除文档
- java - 如何将模板 MS Excel 文件中的格式分配给 Apache POI XSSFWorkbook 中的单元格?
- java - 如何禁用 jmockit 覆盖检测
- java - ForceType 检查约束或默认值