【发布时间】:2017-12-17 16:48:49
【问题描述】:
当我从协议缓冲区文件生成 go 代码时,我注意到生成的每个结构都实现了 Message 接口,https://github.com/golang/protobuf/blob/master/proto/lib.go#L277
有关生成的代码示例,请参阅https://github.com/google/go-genproto/blob/master/googleapis/rpc/status/status.pb.go#L97
显然,Message 接口上的其他方法 String() 和 Reset() 有一个明显的目的,具体的实现示例说明了这一点。但是,我不明白 ProtoMessage() 方法的目的。该方法不带参数也不返回参数,那为什么会存在呢?
【问题讨论】:
-
猜测(因此为什么这是评论,而不是答案),我会说这是为了确保您不会意外实现 Message 接口。只有
String和Reset方法,太多的东西会匹配。例如:如果不需要ProtoMessage(),bytes.Buffer将实现接口。
标签: go protocol-buffers