关于go和grpc和proto一些概念记录,使用方式
grpc的go部分需要安装三个可执行文件:
protoc-gen-go
github:https://github.com/protocolbuffers/protobuf-go
安装:go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28
或者下载发布版本 releases
protoc-gen-go-grpc
github:https://github.com/grpc/grpc-go
安装:go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2
或者
目前在github上,还没有提供release版本,需要自己根据源码生成
参考:window 安装protoc protoc-gen-go-grpc_grpc-go源码剖析与实战 图文专栏的博客-CSDN博客_protoc-gen-go-grpc
protoc
github:https://github.com/protocolbuffers/protobuf
安装:直接下载releases
指令参考:protoc --proto_path=./proto --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative service.proto
或者protoc --proto_path=./proto --proto_path=%GOPATH%\src --go_out=./ --go_opt=paths=source_relative --go-grpc_out=./ --go-grpc_opt=paths=source_relative service.proto
关于proto文件:
option go_package="demo1/test/main;pb"; //表示目录demo1/test/main下生成go文件,包名为pb
如果不指定pb,则默认报名main
如果protoc 指令指定paths=source_relative,那么不会根据go_package目录来生成,会根据source_relative:./test22 (生成到test22目录下) 的路径来生成
更新,关于import引入问题
goland默认无法识别到自己写得proto文件,导入得时候爆红,没有提示,可以试下如下操作:

如果是再gomod环境下生成go文件注意一点,protoc执行生成命令如果想根据go_package 正常得生成到根包得目录下,可以选择在项目外得一层目录执行命令

grpc_demo下面是所有得实际项目目录,demo1在grpc_demo下,并且demo1是module名称

浙公网安备 33010602011771号