golang 使用protobuf其实网上已经有很多的讲解了,
这篇主要讲我自己开始搞的时候有点迷糊的地方,可能会帮到其他跟我一样新手的人。
首先下载protobuf的 编译器protoc 地址:记得下载对版本
window:
下载 protoc-3.6.1-win32.zip
解压后,把bin目录下的exe文件复制到到你的%GOPATH%目录下
接着我们要获取到protobuf的go插件
go get -u github.com/golang/protobuf/protoc-gen-go
如果获取不到的话 可以自己去gitbub上面 clone或是下载 地址:连接地址
记得下载后要复制到github.com/golang
这个目录下,然后进行手动安装
go install github.com\golang\protobuf\protoc-gen-go
之后会在%GOPATH%的bin文件夹里面生成protoc-gen-go.exe
如果你直接把proto文件跟protoc.exe 放在同一个目录 那么进入cmd 执行protoc --go_out=. *.proto
就可以了
另外可以指定proto目录和生成目录 执行protoc --proto_path=你proto文件的目录 --go_out=生成go文件的目录 你的proto文件.proto
这样就可以指定你的proto文件就可以放在任意地方了,包括可以直接在项目里面生成的go文件 不过每次都要进入cmd执行这这么麻烦命令也是很烦的,最后我还是写了bat文件
只要在这个bat文件同目录下创建一个protos文件夹来存放proto文件后,双击bat就会自动帮你生成go文件到同目录下的pb目录下
最后放上bat,当然如果你的protoc.exe 不是放在%GOPATH%目录的话,只需要稍微修改下bat里面protoc的路径也是可以用的
@echo off
set a=%cd%
echo curPath=%a%
set b=%a%\protos
echo proto path=%b%
set c=%a%\pb
echo outPath=%c%
set d=%GOPATH%\bin\protoc.exe
echo %d%
set e=%GOPATH%\bin\protoc-gen-go.exe
echo %e%
if exist %c% (
for /f "delims=" %%i in ('dir /b "%c%\*.go"') do (
echo del file%%i
del %c%\%%i
)
) else (
echo create dir%%i
md pb %a%
)
for /f "delims=" %%i in ('dir /b "%b%\*.proto"') do (
echo create %%i
%d% --plugin=protoc-gen-go=%e% --proto_path=%b% --go_out=%c% %%i
)
pause