grpc实战-pb文件生成问题/空消息体问题

报错信息:

proto: message pb.Empty is already registered
See https://protobuf.dev/reference/go/faq#namespace-conflict

对比老版本的工具生成的xxxx.pb.go文件。import导入的proto链接不一样:
旧版本:import github.com/golang/protobuf
新版本:import google.golang.org/protobuf (更新后的API的主要特点是支持反射,并将面向用户的API与底层实现分开。)
(官方推荐新版本:We recommend that you use google.golang.org/protobuf in new code.)

***问题所在:新版本自己带有empty消息体:google/protobuf/empty.proto

所以我定义的Empty重复了,应该把它删除掉:
message Empty {

}

然后在我们的proto文件中,这样传参:
import “google/protobuf/empty.proto”;

service SomeService {
rpc SomeOperation (google.protobuf.Empty) returns (google.protobuf.Empty) {}
}

实现方法,传递的参数类型是*empty.Empty:
import “github.com/golang/protobuf/ptypes/empty”

func (s *Server) SomeOperation(ctx context.Context, req *empty.Empty) (*empty.Empty, error) {
resp := dosomething()
return resp.(*empty.Empty), nil
}

参考链接:
https://gist.github.com/subfuzion/ecfc45c4e8dfb28e31fb5a8bf2f8282c
https://pkg.go.dev/google.golang.org/protobuf/types/known/emptypb#Empty
其实上面的链接也是根据它一开始报错给的链接上分享的: https://protobuf.dev/reference/go/faq#namespace-conflict

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值