grpc教程——proto文件转go

【1】编写一个proto文件

syntax = "proto3";
package myproto;

service NC{
	
	rpc SayStatus (NCRequest) returns (NCResponse){}
}

message NCRequest{	
	string name = 1;
}
message NCResponse{
	
	string status =1;
}

【2】转换:protoc --go_out=. myservice.proto(其他语言:如python,将go换成python,c++换成

--cpp_out)

protoc --go_out=plugins=grpc:. myservice.proto

报错:

【3】解决问题:

1)下载protoc.exe,添加windows环境path,protoc --version   (图三)

图一、

图二、

Release Protocol Buffers v27.1 · protocolbuffers/protobuf · GitHub

图三、

另外的下载路径:

https://download.csdn.net/download/notfindjob/89460870

2)因为protoc不支持go语言,所以需要下载插件,下载如下两个文件protoc-gen-go.exe、protoc-gen-go-grpc.exe

这两个文件的作用是转换为pb.go和grpc.pb.go文件

下载方法1:

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

结果如下:

下载方法2:

https://download.csdn.net/download/notfindjob/89460383?spm=1001.2014.3001.5503

https://download.csdn.net/download/notfindjob/89460283?spm=1001.2014.3001.5503

【4】protoc-gen-go: unable to determine Go import path for "myservice.proto"

解决办法:

//协议为proto3
syntax = "proto3";
// 指定生成的Go代码在你项目中的导入路径
option go_package="./;myproto";
//协议为proto3
syntax = "proto3";
// 指定生成的Go代码在你项目中的导入路径
option go_package="./;myproto"; //注意:myproto会变成转换后的包名称
package myproto;
// 定义服务接口
// 可定义多个服务,每个服务可定义多个接口
service CNC{
	
	rpc SayStatus (CNCRequest) returns (CNCResponse){}
}
// 请求参数结构
message CNCRequest{	
	string name = 1;
}
// 响应参数结构
message CNCResponse{
	
	string status =1;
}

【5】--go_out: protoc-gen-go: plugins are not supported

解决办法:

1)

protoc --go_out=. myservice.proto

2)

protoc --go-grpc_out=. myservice.proto

--go_out:指定 xx.pb.go 文件的生成位置(c++ 换成--cpp_out)

--go-grpcout:指定 xx_grpc.pb.go 文件的生成位置(c++换成--grpcout)

xx.proto:指定了需要处理的pb 文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值