go - 如何在 Protocol Buffer 中使用自定义 String 方法?

标签 go protocol-buffers

假设我有一个像这样的原型(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/

相关文章:

go - net/http调用的全局控制列表

c# - 来自 golang 和 c# 的 elixir 函数的并行或异步任务

go - 如何在本地运行 pkg.go.dev 作为 godoc 替代品?

java - 我使用 Sockets 和 Netty 时遇到 "broken pipe"异常。怎么了?

android - 未找到 protoc-gen-javanano

performance - 转到HTTP服务器性能问题

json - 在自定义结构标记中使用空格解码 Json

Java源码protoc编译后有很多错误

haskell - 为什么 Haskell/unpack 会弄乱我的字节?

c# - Protobuf-net 枚举向后兼容性