首先使用home brew安裝protobuf:
brew install protobuf
安裝好之後,檢視是否安裝成功
protoc --version
如果成功會有如下類似的版本號顯示:
libprotoc 3.1.0
這表明我安裝成功,並且版本號是3.1.0。
接著安裝protobuf的golang外掛程式
因為protoc需要依賴呼叫protoc-gen-go,所以,它的路徑必須要新增到環境變數裡面去。
它存在於
$gopath/bin之下。
我使用的shell是zsh,因此需要修改配置`/.zshrc
在最後新增配置:
export gopath=$home/documents/golang/
export gobin=$gopath/bin
export path=
"$gobin:$path"
儲存,然後重開zsh,即可。
我的workspace看起來是這樣的資料夾結構:
protobuf協議原始檔放在了protocol/proto下面
helloworld.proto
syntax =
"proto2
";
package test;
message helloworld
在這裡需要注意幾點:
1.如果不定義package,編譯器會自行的將檔名生成package名,如上面的例子將會生成一乙個package helloword;
2.因為golang遵循的是駝峰規則,message和field的名字首字母將會自動轉為大寫字母(如果首字母為下劃線,則下劃線會被自動轉換為大寫的x),而package名則不會;
接著我們就可以用命令列編譯出go**了:
protoc --go_out=. helloworld.proto
執行該命令之後,如果協議沒有語法錯誤,則會在proto檔案同級目錄下生成乙個hellword.pb.go的**檔案,接著我們就能直接拿來用了。
如果是乙個proto檔案,使用一條命令生成是沒有問題的,但是在現實中,並不會只有乙個,會有多個,那麼就需要有批量的生成工具了,在mac/linux下面使用shell指令碼可以搞定,在windows下可以用bat批處理指令碼搞定,下面給乙個mac下的shell指令碼示例**:
generate_code.sh
path=$(dirname $0)
path=$ #
echo $path#/
##編譯protobuf協議##
/protoc --version
protoc --go_out=$path/../ -i=$path $path/helloworld.proto
記得修改檔案可執行許可權,我就很偷懶,用:chmod 777 generate_code.sh搞定。
最後寫go的測試**了:
// 進行編碼
data, err := proto.marshal(data_encode)
if err != nil
// 進行解碼
data_decode := &test.helloworld{}
err = proto.unmarshal(data, data_decode)
if err != nil
// 測試結果
if data_encode.getid() != data_decode.getid()
fmt.println(
"id:
", data_decode.getid())
fmt.println(
"str:
", data_decode.getstr())
fmt.println(
"opt:
", data_decode.getopt()) }
這裡需要注意的是,import裡面所填寫的是go檔案的路徑,而無需要填寫檔名,也就是go檔案的搜尋路徑,預設的根目錄是
$gopath/src
,如果是放在src裡面,則直接寫"protocol"即可,但是我不希望如此,我把它放在了測試go檔案的同級目錄下了,那麼,我就需要這樣寫"./protocol"(需要注意的是,斜槓只能寫/而不能\)。
好了,現在開始編譯:
go build testpb.go
接著是執行:
./testpb
預期的結果是這樣的:
下面是測試**的完整打包:
/files/tx7do/test_pb_go.zip
mac下安裝配置go開發環境
2 配置go環境變數gopath和gobin 1 開啟終端,cd 2 檢視是否有.bash profile檔案 ls all 3 有則跳過此步,沒有則 1 建立 touch bash profile 3 自定義gopath和gobin位置 export gopath users hopkings w...
Mac 下安裝配置Mysql
安裝完成後,在系統設定裡面看,會看到mysql 服務的啟 標如圖所示 mysql 安裝成功後,會在 usr local 目錄下看到有mysql 資料夾 配置環境變數 在 usr local mysql bin 目錄下會看到mysql 的可執行程式如圖 為了方便登陸mysql 配置環境變數即可 1.開...
Mac下Apache Tomcat安裝配置
2.壓縮之後直接拷貝到資源庫中,壓縮後的資料夾名稱為tomcat8,具體位置如下 3.開啟終端,輸入以下命令library tomcat8 bin startup.sh,瀏覽器中輸入localhost 8080,就可以看到一下效果 如果遇到提示no such file or directory錯誤提...