1.grpc需要有这个的支持
官方的方法很坑,少一个protoc.exe的东西,这个需要自己去下
上述是个坑,现在看完整的步骤
第一步
1.先获取需要的package,其实只需要其中的几个,但是为了方便,直接下一个总目录,里面包括example,源码包等。这一步会自动在gopath/bin目录下面生成一个protobuf-gen-go.exe的执行文件,这是其中一个
go get -u github.com/golang/protobuf
go get -u github.com/golang/protobuf/protoc-gen-go
这里可能会奇怪为什么要下一个包里面的包,因为下载第一个包之后,并没有生成protoc-gen-go这个可执行文件,第二个包就是为了生成protoc-gen-go可执行文件而下的,不然就会报类似于protoc-gen-go不是可运行命令之类的错误。
可能遇到的问题:无法下载该包
解决办法,直接使用git clone命令克隆 github.com/golang/protobuf该项目,然后手动取执行内部名称gen-go的一个项目编译,将构建好的protoc-gen-go.exe的文件放进gopath/bin中。因为官方的proto执行的命令生成的go文件中,使用了 --go_out这个option,这个其实是调用了protoc-gen-go.exe这个命令,本身的proto是没有该选项的。
第二步
2.上述那个执行文件只是一个插件,并不是protoc ..开始的命令执行文件。这个命令执行文件,还要去下这个可执行文件,这个不是一起的,不是一个东西,文档里面没有说(特别坑)。
去这里下一个Windows64的压缩包
https://github.com/protocolbuffers/protobuf/releases
第三步
3.就是下列这个
解压下来,bin下面有个protoc.exe的文件,这个可执行文件,才是protoc命令的执行文件,他会引用上述第一步那个插件,是这么用的。但是他这个protoc的git项目里面,编译又不会生成这个可执行文件,真的特别坑啊。正儿八经的不能编译生成(因为他没有main,只是一个包引用),插件可以生成真是醉了。
第四步
4.接下来一步,把上述那两个放到环境变量里面就好了,一般的操作都是,把exe可执行文件放到gopath/bin下面,然后把gopath/bin放入环境变量中。
第五步
5.最后,就可以正常的执行这种代码的,下面这个*指的是,你的protoc文件名
protoc --go_out=. *.proto
protoc --go_out=plugins=grpc:. *.proto